我已將我的分支與錯誤的分支合併並推送,後來我意識到這個錯誤並再次與正確的分支(主)合併。取消合併分支在Git與Sourcetree
你可以請建議我現在如何解開錯誤的分支?
主人
|
B(錯誤的我合併了)
|
A(我的分支)
現在我需要取消合併這B.
我已將我的分支與錯誤的分支合併並推送,後來我意識到這個錯誤並再次與正確的分支(主)合併。取消合併分支在Git與Sourcetree
你可以請建議我現在如何解開錯誤的分支?
主人
|
B(錯誤的我合併了)
|
A(我的分支)
現在我需要取消合併這B.
理想情況下,你可以用核武器炸不正確的合併,從已發佈的分支提交,因爲它不屬於那裏。但是,這樣做會重寫歷史記錄,這是不可取的,因爲該分支是公開的,而其他人可能已經將其取消。
相反,更安全的選擇是使用git revert
撤消B
合併提交引入的任何更改。
類型git log
並找到B
合併提交的<SHA-1>
散列。假設合併提交有1a3mj4w1
哈希鍵入:
git revert 1a3mj4w1
這將添加一個新提交上的A
有效地撤消合併提交B
頂部。現在你的歷史看起來就像這樣:
master
\
B -- A -- C
其中C
是承諾在git revert
介紹。現在,您可以簡單地將分支推送到遠程,而不會出現任何問題。
解決方案1:
您可以將您的分支恢復到它是在之前的合併狀態如果發現提交這是對呢。
使用git reflog
,它會列出您擁有的所有HEAD。 我發現git reflog --relative-date
非常有用,因爲它顯示了每次更改發生前多長時間。
一旦你發現提交只是做一個git reset --hard <commit id>
和你的分支將像以前一樣。
你可以簡單地git revert
這次合併提交像這樣:
git checkout BRANCH_NAME
git revert -m 1 <merge_commit_sha>
注:這可能是你最終會與一些衝突,你必須要手動取消合併,就像正常合併時一樣。