6

我最近在我的git合併策略中犯了一個錯誤,直到我已經繼續在該項目上工作並做出更多提交之前,沒有注意到結果錯誤。爲了簡潔起見,假設我有兩個分支,分別爲hotfixnew_feature。我不喜歡的東西如下:Git:拉錯了分支,然後推動合併。如何撤消?

git checkout new_feature 
git commit -m "Commit to the feature branch" 
git checkout hotfix 
git pull origin new_feature # Uh oh, I pulled the wrong branch! 
git commit -m "Commit to the hotfix" 
git push origin hotfix # Uh Oh, pushed the bad merge! 

上述事件後,其他開發商也做了提交給修補程序分支。現在,我們有一個我們想要推出的修補程序,但不能,因爲它包含的功能不完整。

我已經看到很多關於這種情況的類似問題,但沒有一個匹配100%(其中大多數涉及在不良推拉之後直接撤消提交,而沒有先推動提交,我已經更進一步了,並且真的borked事情

我如何能解決這個問題的任何一步一步的引導

感謝

編輯:?!許多其他的答案提到git reflog,所以這裏是我的一個修改後的副本。我改變了哈希和分支名稱以匹配我的示例ab OVE。

aaaaaaa [email protected]{0}: checkout: moving from new_feature to hotfix 
bbbbbbb [email protected]{1}: checkout: moving from hotfix to new_feature 
aaaaaaa [email protected]{2}: commit: Added analytics tracking 
ccccccc [email protected]{3}: commit (merge): Fixed a merge issue in compiled css # BAD MERGE? 
ddddddd [email protected]{4}: checkout: moving from new_feature to hotfix 
eeeeeee [email protected]{5}: commit: Finished updating the events for the header 
ddddddd [email protected]{6}: checkout: moving from hotfix to new_feature 
ddddddd [email protected]{7}: checkout: moving from new_feature to hotfix 

在上面的reflog中,[email protected]{3}看起來是錯誤的合併。我在hotfix分支,並拉到new_feature分支,這給合併衝突。我修好了他們,然後推開。我會做什麼來解決這個問題?

回答

3

查找提交哈希:git log --pretty=format:"%h %s" | grep "Commit to the hotfix"

還原的「啊哦」承諾:git revert 15d2e1f -m 2

+0

但不只是一個承諾。 「呃哦」提交是另一個分支的合併,其中包括一堆提交!我需要通過修補程序歷史記錄並恢復一些提交,這似乎有點「哈克」 –

+0

編輯後的版本就像一個魅力。 –