Git合并分支如何忽略特定提交?C# NuGet项目场景求助
合并分支时排除特定提交的可行方案
核心结论
完全可行,你可以通过两种方式实现将master的新改动合并到测试分支,同时保留分支中「将CFWF纳入AS解决方案」的修改,排除master上的那次revert提交。
操作步骤
假设你的测试分支名为test-cfwf,master上的revert提交哈希为abc123(可通过git log查看),解决方案文件名为AccountServer.sln。
方式一:合并时指定文件策略
- 切换到测试分支
git checkout test-cfwf
- 执行合并命令,针对revert提交涉及的文件保留分支版本
git merge master -X ours=abc123
该命令会合并master的所有新改动,但对于abc123提交修改的文件(即解决方案文件),强制使用当前分支的版本,忽略master上的revert操作。
方式二:合并后手动恢复文件
- 切换到测试分支并正常合并master
git checkout test-cfwf git merge master
- 恢复解决方案文件到合并前分支的版本
git checkout HEAD@{1} -- AccountServer.sln
- 修正合并提交,保留恢复后的文件状态
git commit --amend --no-edit
后续合并说明
完成上述操作后,测试分支会包含master的所有新业务改动,同时保留CFWF在解决方案中的本地引用配置,不影响后续测试工作。当未来再次需要将测试分支的业务代码合并回master时,只需再次排除「修改解决方案」的提交即可(比如重复之前的合并+revert流程,或合并时指定文件策略)。
内容的提问来源于stack exchange,提问作者Nikki Locke
相关产品推荐
相关产品推荐

