从master的独立主管恢复对旧提交的更改

时间:2017-09-05 01:53:26

标签: git

我的起源/主人不知何故得到了一些不必要的合并。因此,我试图将origin / master恢复为之前的提交。在这样做时,我检查远程HEAD并运行$ git reset --hard fcced95d565a4e54e81f15d1efeab5fdf7a483ca。然后我试图基本推动这个提交并运行$ git push -f origin master。然而,这样做实际上使原点/主人处于我当地所处的状态,而这远远落后于我想要为我的DEATACHED HEAD OF master恢复提交的地方。我该如何纠正这个问题?

1 个答案:

答案 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