2017-09-05 127 views
0

我的起源/主人以某種方式得到了一些不需要的合併。因此,我試圖將原點/主點恢復到之前的提交。當我這樣做時,我簽出遠程HEAD並運行$ git reset --hard fcced95d565a4e54e81f15d1efeab5fdf7a483ca。然後我試圖基本推動這個提交併運行$ git push -f origin master。但是,這樣做實際上將原點/主點帶入了我的本地所在的狀態,並且這是我想要恢復提交給我的DEATACHED HEAD OF master的位置的方式。我該如何糾正這個問題?恢復從主分離的頭部更舊的提交更改

回答

0

假設你還沒有還覆蓋當地master分支,你可以嘗試以下方法:

git checkout master 
git push --force origin master 

這是假設你的本地master是活得很好,並且通過污點你做了什麼它的遠程副本。如果你 nuked你當地的master分支,那麼你需要做更多的工作。

首先,我們可以使用一個名爲reflog的工具來查找在您覆蓋之前提交的前一個頭部master。鍵入git reflog,這將提取最近在回購中分行負責人活動的提交列表。您將不得不篩選此列表以查找master之前的頭部提交。 Stack Overflow和Git手冊很好地介紹瞭如何瀏覽reflog。

然後,一旦你的SHA-1散列的承諾,只是做從master如下:

git reset --hard <SHA-1 of previous HEAD> 

這將重置本地master正確的提交。然後再用力推覆蓋遠程分支:

git push --force origin master