2013-07-15 25 views
0

這是情況。我對我的分支和origin/master進行了合併(在圖片上提交了80d0e2b),並將我的更改推送到遠程服務器。合併似乎是低劣的,我決定申請git reset HEAD~1將其從服務器中刪除(是的,我是愚蠢的)。現在我結束了這種情況,當某些提交(例如MOB-25)無法從任何分支到達時,提交2e4df35被稱爲最後一個。如何解決錯誤重置的後果?

我想過將原點/主點改爲指向MOB-25,然後再應用提取並再次合併。

我也發現這個線程建議使用reflog(How can I undo git reset --hard HEAD~1?),但我想100%確定。什麼是解決這個混亂的最好方法? enter image description here

+1

@Andrew艾利特:damluar希望成爲「100%當然「,但它是重複的。 ;)但是,它是重複的。值得讓這個問題保持開放,但是,這是一個比簡潔的原始問題更好的問題,雖然原來有更好的答案... – Arafangion

回答

1

您唯一的選擇是使用git reflog來查找sha1提交的歷史列表以及您的備份。

一旦你找到了你想要的提交,從它的標記或分支,使它出現在你的日誌。

哎呀,標記全部 reflog行,如果你想要,用不同的標籤指示'MOB-25',並使用gitk或你首選的git程序來查看版本樹。當你找到你想要的那個時,隨時刪除它們。

要查看引用日誌:

git reflog 

要創建標籤:

git tag MOB-25a theSha1 

要創建一個分支:

git branch theSha1 MOB-25a 
+0

你能提供命令嗎? – damluar

+0

@Andrew Aylett:感謝編輯,錯過了,對此感到遺憾。 – Arafangion

+0

因此,我創建了一個指向最後一次丟失提交的分支,然後我可以將它與當前提交合並。這樣對嗎?爲什麼我們需要標籤? – damluar