如何恢复我的代码?
我执行了以下两个命令:
git log -all -p
git reflog
我看到我的代码在那里。但是,我不确定如何恢复它们。
以下是 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
在我按照
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
其中
X
指定当前提交。要获得填充布局中的更改,您只需将它们 merge 到母版即可。由于这是一个快进 merge (即分支没有发散),
git reset --hard
在这种情况下也会做同样的事情,除了它还会不可撤销地删除所有未提交的更改。此外,如果您处于填充布局和母版分歧的情况,例如 master
o------o------X
\
\ filling-in-layout
o------o
git reset --hard filling-in-layout
会让你丢失(可撤销地)在 master 中而不是在填充布局中的提交。关于git - 我如何恢复代码? Git 菜鸟,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5347677/