我的起源/主人不知何故得到了一些不必要的合并。因此,我试图将origin / master恢复为之前的提交。在这样做时,我检查远程HEAD并运行$ git reset --hard fcced95d565a4e54e81f15d1efeab5fdf7a483ca
。然后我试图基本推动这个提交并运行$ git push -f origin master
。然而,这样做实际上使原点/主人处于我当地所处的状态,而这远远落后于我想要为我的DEATACHED HEAD OF master恢复提交的地方。我该如何纠正这个问题?
答案 0 :(得分:0)
假设您还没有覆盖本地master
分支,则可以尝试以下操作:
git checkout master
git push --force origin master
这假设您的本地master
活得很好,并且对您对其远程对手所做的事情没有感觉。如果您还修改了本地master
分支,那么您需要做更多的工作。
首先,在覆盖它之前,我们可以使用一个名为reflog的工具来查找master
的前一个HEAD的提交。键入git reflog
,它将在您的仓库中的分支头上提取最近活动的提交列表。您将不得不筛选此列表以查找master
之前的HEAD提交。 Stack Overflow和Git手册很好地介绍了如何浏览reflog。
然后,一旦你有了提交的SHA-1哈希,只需从master
执行以下操作:
git reset --hard <SHA-1 of previous HEAD>
这会将本地master
重置为正确的提交。然后再做一次强制推动来覆盖远程分支:
git push --force origin master