如何恢复主分支上的先前提交并将代码保存在另一个分支中?

时间:2011-11-14 16:03:16

标签: git github

我刚刚在生产网站上进行了推动,所有的更改都在掌握。但我意识到我推送的代码需要改变,所以我需要恢复最后一次提交,但从该提交中获取所有代码并将其放在另一个分支中,以便我可以稍后推送....任何方式来做到这一点< / p>

3 个答案:

答案 0 :(得分:3)

有很多方法可以解决这个问题。

这就是我要做的事情(有一点额外的保险)

假设您的HEAD位于“错误的位置”(没有双关语),您可以

 git branch rescue
 # you are still on master
 git reset HEAD^ # soft resets the last commit
 git push -f     # to undo the push - beware of other users of the push-branch

现在编辑/救援您就地提交(因为最后一次提交的更改现在再次挂起)。如果发生紧急情况,您可以随时查看rescue分支,这只是您在开始此帖子时的HEAD副本。

答案 1 :(得分:1)

我建议使用更正恢复提交修复已推送的提交。您也可以从恢复的提交中安全地开始实验。另请参阅Git Community Book, Undoing in Git

git revert HEAD
git push

重写已发布的提交被认为是一种不好的做法(引自同一部分):

  

修复已犯错误

     

如果你做了一个你以后希望没有的提交,那么有两个   从根本上解决问题的不同方法:

     

您可以创建一个新的提交来撤消旧的提交   承诺。如果你的错误已经存在,这是正确的   公之于众。

     

您可以返回并修改旧提交。你永远不应该这样做   你已经把历史公之于众; git通常不会期望   一个项目的“历史”改变,并不能正确执行   从历史发生变化的分支重复合并。

另见Pro Git, Rebasing“重新定罪的危险”一节,为什么这不好。

答案 2 :(得分:0)

2个步骤:

1)关闭当前主分支。(保存代码以便进行修复。)

2)回滚1在master中提交。 git reset --hard HEAD~1