Git Checkout将代码还原为旧提交,如何还原?

fut*_*216 5 git git-checkout

我一直在研究一些代码,我使用git来管理.早些时候,我使用commit来保存我的代码版本.后来我决定重做代码,因为它需要一些新功能并且设计得很差.在我开始工作后,我做了另一个git提交.做完git log后,我看到我不在任何分支上.所以,我做了"git checkout master".这带回了旧代码的版本,git log现在显示了我的最新提交.这是很多工作,所以我想知道是否有任何方法来撤消我所做的,并取回我的最新代码.在此先感谢您的帮助.

kni*_*ttl 14

检查git reflog并找到您的提交.

最安全的事情是在"丢失"提交中创建一个分支,然后使用gitk或检查是否所有内容都是花花公子git log -p

git branch recovery HEAD@{1} # use whatever commit you need
git log -p recovery
Run Code Online (Sandbox Code Playgroud)

然后可以合并这个新的分支,在主人的基础上重新定位,在樱桃挑选的承诺等等.在git中有许多可能性来射击自己的脚,还有几种方法来重新连接那只脚(可能是你的武器).

如果你没有在master上做过任何新的提交,你可以简单地合并有问题的提交,这将被git解析为快进合并:

git merge HEAD@{1} # use whatever commit you need
Run Code Online (Sandbox Code Playgroud)

如果您不关心master上的任何新提交,并且您只想将master分支重置为丢失的提交,请使用git reset.要不丢失任何更改,请先将更改隐藏到工作副本中(git stash save)

git reset --keep HEAD@{1}
Run Code Online (Sandbox Code Playgroud)

下次当您发现自己不在任何分支上时,请使用git branch newbranchgit checkout -b newbranch