本人github
如果你有两个分支(例如,一个叫old-branch
,另一个叫new-branch
),并且你想比较这两个分支以去掉new-branch
中old-branch
已经做过的修改,你可以使用以下几种方法:
方法 1:使用 git diff
和 git apply
-
生成两个分支之间的差异:
git diff old-branch..new-branch > changes.patch
-
切换到
new-branch
:git checkout new-branch
-
反向应用差异:
git apply -R changes.patch
这将撤销new-branch
中所有old-branch
已经做过的更改。
方法 2:使用 git rebase -i
-
切换到
new-branch
:git checkout new-branch
-
交互式地rebase到
old-branch
:git rebase -i old-branch
这将打开一个文本编辑器,列出所有new-branch
相对于old-branch
的提交。你可以删除那些你不想保留的提交行。
方法 3:使用 git cherry-pick
如果你知道具体哪些提交是new-branch
特有的,并且你想保留它们,你可以创建一个全新的分支,然后逐一选择你想要的提交。
-
从
old-branch
创建一个新分支:git checkout old-branch git checkout -b new-clean-branch
-
逐一选择(cherry-pick)你想要的提交:
git cherry-pick <commit_hash>
这样,new-clean-branch
就只会包含你明确选择的提交,而不会有old-branch
中的任何更改。
选择适合你的方法,并谨慎操作。希望这能帮助你!有其他问题吗?