簡體   English   中英

使用Sourcetree取消合並Git中的分支

[英]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

其中Cgit revert引入的提交。 現在,您可以毫無問題地將分支機構推送到遠程。

解決方案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> 

注意:可能會遇到一些必須手動解除的沖突,就像正常合並時一樣。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM