在Git中,如果您对重新设置不满意,该如何回滚?
Git没有试运行的基础。如果我进行了变基并且还没有推送,那么如何回滚到以前,好像从未发生过?
在Git中,如果您对重新设置不满意,该如何回滚?
Git没有试运行的基础。如果我进行了变基并且还没有推送,那么如何回滚到以前,好像从未发生过?
Answers:
您可以使用reflog在重新启动基准之前找到第一个操作,然后将--hard重置回该操作。例如
$ 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”开头的条目。
如果重新部署是您在分支上唯一要做的事情,即您没有未推送的提交/更改-那么您可以使用删除本地分支,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
或出于相同的效果,您可以将--hard重置为origin分支:
$ git reset --hard origin/my-branch
如果您在执行其他未按下的提交时这样做,那么您将丢失它们。在这种情况下,只需使用上面的reflog方法跳回到您进行提交的reflog条目。
ORIG_HEAD为要重新建立分支的原始哈希值。因此,而不是寻找号2 HEAD@{2},你可以只使用ORIG_HEAD...但只如果ORIG_HEAD仍然不受干扰。一堆Git命令对其进行了设置(在各种情况下会变基,修改,重置和合并)。