解决Git合并冲突后,如何仅推送PR相关更改?
合并master分支冲突后仅推送PR相关更改的正确操作
当你在branchA开发且已有PR,合并master分支更新时,若遇到冲突并手动解决后,只需聚焦于冲突文件进行操作,就能避免PR混入多余内容:
方法一:使用merge(保留合并提交)
解决完所有冲突后,先确认哪些是真正需要处理的冲突文件:
git diff --name-only --diff-filter=U这个命令会列出所有存在冲突的文件,这些是你需要确认解决完成的文件。
仅将冲突文件添加到暂存区:
git add <冲突文件路径1> <冲突文件路径2>不要使用
git add .,否则会误将所有文件(包括git已自动合并完成的master分支文件)暂存。提交合并操作:
git commit此时git会自动生成合并提交的默认信息,你也可以根据需要修改。
推送分支到远程:
git push origin branchA
方法二:使用rebase(更干净的提交历史)
如果你希望提交历史更线性、无合并提交,可以用rebase替代merge:
切换到master分支拉取最新更新:
git switch master git pull切回
branchA:git switch branchA基于最新master进行rebase:
git rebase master遇到冲突时,手动解决冲突后,仅添加冲突文件:
git add <冲突文件路径>继续rebase流程:
git rebase --continue重复步骤4-5,直到rebase完成。
推送分支(因rebase改写了历史,需用
--force-with-lease安全强制推送):git push origin branchA --force-with-lease
问题根源说明
你之前解决冲突后看到master分支所有文件呈绿色,大概率是用了git add .将所有文件暂存,包括git已自动合并完成的master分支文件。但这些文件的内容和master完全一致,PR的差异对比不会显示它们——除非你误修改了这些文件。只要只暂存并提交冲突文件,就能保证PR仅包含你开发的更改。
内容的提问来源于stack exchange,提问作者Nitron_707
相关产品推荐
相关产品推荐

