Git应用含已提交改动的补丁的最优处理方案咨询
Git补丁问题最优处理方案
优先选择手动提取补丁中唯一未纳入commit_2的额外改动单独应用,不建议直接在commit_2之上完整应用补丁,具体说明如下:
直接应用补丁的弊端
- 会产生大量无意义冲突:补丁基于base_commit生成,和你当前的commit_2没有直接的衍生关系,Git无法自动识别补丁中已经被commit_2覆盖的改动内容,会把这些重合部分全部标记为冲突,你需要额外花费时间处理大量重复冲突,效率极低。
- 会污染提交历史:如果强行合入完整补丁,后续查看提交日志时会出现大量重复变更记录,不利于代码溯源和问题排查。
具体操作步骤
低门槛处理方式
执行命令尝试应用补丁并自动分离冲突内容:git apply /path/to/补丁文件路径 --reject
该命令会自动合入补丁中与当前代码无冲突的内容,把无法自动合入的改动单独保存为后缀为.rej的文件,你只需要打开rej文件,提取那一处额外改动,手动修改对应代码文件即可。更灵活的处理方式
直接查看补丁的完整差异内容,手动提取目标改动:git show /path/to/补丁文件路径
定位到未出现在commit_2中的那处改动,手动添加到当前代码中即可。提交改动
改动验证无误后正常提交即可,如果需要保留补丁原作者的信息,可以在提交时指定作者:
git add 改动的文件 git commit --author="原作者名称 <原作者邮箱>" -m "合入XX补丁中的XX功能修复"
内容的提问来源于stack exchange,提问作者KansaiRobot
相关产品推荐
相关产品推荐

