Git如何回滚rebase

在Git中,如果你不满意,你如何回滚rebase?

Git没有进行rebase的干运行。 如果我做了rebase并且还没有推它,我该如何回滚到之前,好像它从未发生过一样?


你可以使用reflog在rebase开始之前找到第一个动作,然后重置 - 重新回到它。 例如

$ git reflog

b710729 HEAD@{0}: rebase: some commit
5ad7c1c HEAD@{1}: rebase: another commit
deafcbf HEAD@{2}: checkout: moving from master to my-branch
...

$ git reset HEAD@{2} --hard

现在你应该回​​到rebase开始之前。

要找到重新设置的正确位置,您只需选择最靠近顶端的条目, 而不是以“底线”开头。

替代方法

如果rebase是你在分支上完成的唯一的事情 ,也就是说你没有不必要的提交/更改 - 那么你可以用git branch -D删除本地分支,然后再次检查它:

$ git checkout my-branch
$ git rebase master
// not happy with result
$ git checkout master
$ git branch -D my-branch
$ git checkout my-branch

或者,为了达到同样的效果,您可以重置 - 对原始分支进行操作:

$ git reset --hard origin/my-branch

如果你在做了其他事情时做了这些工作,那么你将失去它们。 在这种情况下,只需使用上面的reflog方法即可跳回到提交的reflog条目。

链接地址: http://www.djcxy.com/p/23545.html

上一篇: Git how to rollback a rebase

下一篇: Recover from inadvertent skip during rebase