2012-10-17 74 views
0

一名開發人員將分支feature2合併到feature1中,並推送了結果,但錯誤地解決了一些合併衝突。我從feature1中檢出了提交A,並在提交B中從feature2正確合併(AB與其他開發人員合併的提交相同)。Git:撤消已發佈的合併提交併應用另一個提交合並

我將合併的結果提交給分離的頭部,現在需要恢復其他開發人員的合併提交併將自己的合併應用到feature1。我怎樣才能做到這一點?

回答

1

危險的方式:

1)標籤的分離承諾,即git tag temp

2)結賬feature1分支。

3)使用git reset --hard temp移動分支的本地副本以指向您的提交。

4)使用git push -f origin feature1覆蓋origin上的詭計版本。

5)用git tag -d temp刪除標籤。

請謹慎操作,並使用gitk來查看您正在做的事情。確保當時沒有人在使用origin。如果你是偏執的人,在你開始做所有這些之前,先標記你的同事的提交(這是一個好主意,以防你陷入困境)。

重要提示:如果其他人基於您的同事合併工作,請先仔細想想,然後再這樣做。每個人最終都需要重新進行新的提交。

+0

是否有一個選項不會涉及重寫'origin'上的歷史記錄? – spiffytech