我遇到这种情况,我意外地将一个分支合并到master
。
现在,我希望master
分支回到之前的状态。我使用了git reset --hard HEAD^
但是当我想要推送时我得到了这个错误:
更新被拒绝,因为您当前分支的提示已落后 它的远程对手
有什么方法可以解决这个问题吗?
答案 0 :(得分:2)
据我了解,您目前正在处理主分支,只是想将其重置为与其远程对应物完全相同(即丢弃您的更改)。最简单的方法是:
$ git fetch
$ git reset --hard origin/master
如果你已经推动了你所做的合并,你将不得不做一个强制推动。 但要小心,因为这会消除其他人在此期间可能会掌握的任何变化。
$ git reset --hard <hash of commit that is the earlier version of master to which you want to revert, as shown in the merge commit that you made>
$ git push -f
答案 1 :(得分:1)
您有几种选择:
删除本地分支并再次检出:
# checkout temp branch
git checkout - b tempBranch
# delete the current branch
git branch -D master
# checkout the old branch
git fetch --all --prune
git checkout master
使用git reflog
git reflog
您也可以随时使用reflog
git reflog
将显示更新HEAD
的任何更改,并且检出所需的reflog条目会将HEAD
设置回此提交。
每次修改HEAD时,reflog
git reflog
git checkout HEAD@{...}
这会让你回到你想要的提交
这将使您处于一个独立的头部,您将必须检查新的分支并按照步骤1中所述执行上一步。