如何恢复我的代码?
我执行了以下两个命令:
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}提交中。啊...我完全不知道我在说什么。请帮助:/
任何帮助都将不胜感激!
发布于 2011-03-18 15:14:49
首先,当您建议或被建议使用git reset --hard时,您应该非常小心--它是为数不多的可能导致不可挽回的数据丢失的git命令之一。也就是说,在你的情况下,它可能是安全的。
如果您没有对您的存储库做任何奇怪的事情,那么就没有什么可以恢复的;您的所有工作都安全地放在分支上;git merge filling-in-layout应该可以解决您的问题。假设您在切换到分支之前创建了分支,此时您的存储库如下所示:
static-pages
master filling-in-layout
o------o------X------o------o其中X指定当前提交。要获得填充布局中的更改,只需将它们合并到master即可。
由于这是一个快进合并(即分支没有分叉),git reset --hard在这种情况下也会做同样的事情,除了它还会不可撤销地删除所有未提交的更改。此外,如果您处于填写布局和母版不一致的情况下,例如
master
o------o------X
\
\ filling-in-layout
o------ogit reset --hard filling-in-layout会让你丢失(可撤销的)在主布局中而不是在填充布局中的提交。
发布于 2011-03-18 11:27:29
你会这样做:
git reset --hard HEAD@{1}发布于 2011-03-18 16:38:10
您有三个分支:主页、填充布局和静态页面。光盘上的文件反映了您已签出的提交。
检出master时,光盘上的文件将与master中提交的文件匹配。
如果您想恢复到分支填充布局中文件的状态,只需查看分支:
git checkout filling-in-layout如果您想要采用您在filling in -layout中所做的更改,并将它们导入到您的主分支,请像对HEAD@{4}所做的那样进行合并:
git checkout master
git merge filling-in-layout请注意,如果您已经在主服务器上,并且对磁盘上的文件进行了本地更改,则需要在合并之前提交更改、放弃更改或将更改隐藏起来。
https://stackoverflow.com/questions/5347677
复制相似问题