如何比较两个新旧分支,将新的分支中的修改去掉另一旧分支的修改?

本人github

如果你有两个分支(例如,一个叫old-branch,另一个叫new-branch),并且你想比较这两个分支以去掉new-branchold-branch已经做过的修改,你可以使用以下几种方法:

方法 1:使用 git diffgit apply

  1. 生成两个分支之间的差异:

    git diff old-branch..new-branch > changes.patch
    
  2. 切换到new-branch

    git checkout new-branch
    
  3. 反向应用差异:

    git apply -R changes.patch
    

这将撤销new-branch中所有old-branch已经做过的更改。

方法 2:使用 git rebase -i

  1. 切换到new-branch

    git checkout new-branch
    
  2. 交互式地rebase到old-branch

    git rebase -i old-branch
    

这将打开一个文本编辑器,列出所有new-branch相对于old-branch的提交。你可以删除那些你不想保留的提交行。

方法 3:使用 git cherry-pick

如果你知道具体哪些提交是new-branch特有的,并且你想保留它们,你可以创建一个全新的分支,然后逐一选择你想要的提交。

  1. old-branch创建一个新分支:

    git checkout old-branch
    git checkout -b new-clean-branch
    
  2. 逐一选择(cherry-pick)你想要的提交:

    git cherry-pick <commit_hash>
    

这样,new-clean-branch就只会包含你明确选择的提交,而不会有old-branch中的任何更改。

选择适合你的方法,并谨慎操作。希望这能帮助你!有其他问题吗?

猜你喜欢

转载自blog.csdn.net/m0_57236802/article/details/132898733