2012-08-23 28 views
5

我在我的git回購中設置了一個遠程設備並從一個完全不同的項目中獲取了一個錯誤。在獲取錯誤回購後修復Git歷史

幸運的是,沒有合併,但我現在有2個項目的歷史記錄在我的回購中浮動,我試圖弄清楚如何讓我的回購回到我在做出錯誤之前的狀態取。

我一直在閱讀有關reflogrebasegc等命令試圖找出這將幫助我擺脫的東西,我不小心取出,但至今沒有得到任何地方。

它看起來像我在我的回購項目中有兩個項目的歷史,但他們是完全獨立的。基本上有2種獨立並行運行到對方提交的樹木,其實,這是我在gitk看到在看所有分支時:

enter image description here

你可以看到,中間的提交是沒有連接到歷史開始和結束時的提交。日期方面,它們是交錯的,但由於某些原因,gitk不顯示它們交錯。

孤立的提交(在圖片的中間)是我試圖擺脫自己,並且他們似乎不附加到任何分支。在我的回購中沒有任何HEAD的路線返回到這組提交。

到目前爲止,我已經試過(爲了以防它是否有差別):

git remote prune 
git prune 
git gc 
git gc --aggressive --prune=tomorrow 
git remote update --prune 
git fetch --all 

但是,什麼也還沒有幫助。任何人都可以建議我如何從我的回購中刪除這些提交?

回答

8

您只需要使用git tag -d 0.1.something刪除懸掛標記(0.1.something,其中something在屏幕截圖中不可見)。一旦完成,提交將變得可行。

只要有到達一個承諾,這個承諾被認爲是可到達,因此將堅持「永遠」的標記,直到你刪除指向任何裁判給它(分支,標籤是有效的免疫垃圾收集,其他參考,...)

+1

謝謝,這正是我所需要的,沒有想到我的標籤可能會阻止我從刪除提交+1 – chrisbunney