我最近在我的git合併策略中犯了一個錯誤,直到我已經繼續在該項目上工作並做出更多提交之前,沒有注意到結果錯誤。爲了簡潔起見,假設我有兩個分支,分別爲hotfix
和new_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
分支,這給合併衝突。我修好了他們,然後推開。我會做什麼來解決這個問題?
但不只是一個承諾。 「呃哦」提交是另一個分支的合併,其中包括一堆提交!我需要通過修補程序歷史記錄並恢復一些提交,這似乎有點「哈克」 –
編輯後的版本就像一個魅力。 –