[英]Unmerge a branch in Git with 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>
注意:可能會遇到一些必須手動解除的沖突,就像正常合並時一樣。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.