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