如何恢复我的代码?
我做了以下两个命令:
git log -all -p
git reflog
Run Code Online (Sandbox Code Playgroud)
我看到我的代码在那里.但是,我不确定如何恢复它们.
以下是reflog显示的内容:
23f50a6 HEAD@{0}: checkout: moving from filling-in-layout to master
39bdf8c HEAD@{1}: commit: Finished layout and routes
2ca279b HEAD@{2}: commit: Removed default Rails page
23f50a6 HEAD@{3}: checkout: moving from master to filling-in-layout
23f50a6 HEAD@{4}: merge static-pages: Fast-forward
436aabd HEAD@{5}: checkout: moving from static-pages to master
23f50a6 HEAD@{6}: commit: Done with static pages
c11e8b0 HEAD@{7}: commit: Added a Pages controller
436aabd HEAD@{8}: checkout: moving from master to static-pages
436aabd HEAD@{9}: commit: Improved the README and .Gitignore
a1d135d HEAD@{10}: commit (initial): Initial commit v.3
Run Code Online (Sandbox Code Playgroud)
在我执行了结帐后,我的HEAD@{0}所有代码都被删除并恢复到HEAD@{9}状态.我就是这样的菜鸟,我正在学习与Hartl教程的RoR.但是,按照他的建议,我在过去5个小时内完成的所有工作都已消失.他们应该在HEAD@{1}提交中.啊......我不知道我在说什么.请帮忙 :/
任何帮助都感激不尽!
首先,当您建议或建议使用时,您应该非常小心git reset --hard- 它是少数git命令之一,可导致不可挽回的数据丢失.那就是说,在你的情况下它可能是安全的.
如果你的存储库没有任何奇怪的东西,就没有什么可以恢复的; 你所有的工作安全地坐在树枝上; git merge filling-in-layout应该解决你的问题.假设您在切换到它们之前就创建了分支,那么您的存储库目前看起来如下:
static-pages
master filling-in-layout
o------o------X------o------o
Run Code Online (Sandbox Code Playgroud)
在哪里X指定当前提交.要获得填充布局的更改,只需将它们合并到master即可.
由于这是一个快进合并(即分支没有分歧),git reset --hard在这种情况下也会这样做,除了它还不可撤销地删除所有未经修改的更改.此外,如果您处于填写布局和主人分歧的情况,例如
master
o------o------X
\
\ filling-in-layout
o------o
Run Code Online (Sandbox Code Playgroud)
git reset --hard filling-in-layout 你是否会失败(可撤销)主人的承诺,而不是填写布局.