2016-03-02 306 views
2

我已將我的分支與錯誤的分支合併並推送,後來我意識到這個錯誤並再次與正確的分支(主)合併。取消合併分支在Git與Sourcetree

你可以請建議我現在如何解開錯誤的分支?

主人

|

B(錯誤的我合併了)

|

A(我的分支)

現在我需要取消合併這B.

回答

3

理想情況下,你可以用核武器炸不正確的合併,從已發佈的分支提交,因爲它不屬於那裏。但是,這樣做會重寫歷史記錄,這是不可取的,因爲該分支是公開的,而其他人可能已經將其取消。

相反,更安全的選擇是使用git revert撤消B合併提交引入的任何更改。

類型git log並找到B合併提交的<SHA-1>散列。假設合併提交有1a3mj4w1哈希鍵入:

git revert 1a3mj4w1 

這將添加一個新提交上的A有效地撤消合併提交B頂部。現在你的歷史看起來就像這樣:

master 
     \ 
     B -- A -- C 

其中C是承諾在git revert介紹。現在,您可以簡單地將分支推送到遠程,而不會出現任何問題。

0

解決方案1:

您可以將您的分支恢復到它是在之前的合併狀態如果發現提交這是對呢。

使用git reflog,它會列出您擁有的所有HEAD。 我發現git reflog --relative-date非常有用,因爲它顯示了每次更改發生前多長時間。

一旦你發現提交只是做一個git reset --hard <commit id>和你的分支將像以前一樣。


解決方案2:

你可以簡單地git revert這次合併提交像這樣:

git checkout BRANCH_NAME 
git revert -m 1 <merge_commit_sha> 

注:這可能是你最終會與一些衝突,你必須要手動取消合併,就像正常合併時一樣。