如何在Git合并冲突解决后、提交前列出所有参与冲突的文件
实现方法
场景1:尚未执行git add标记冲突已解决
直接运行以下命令即可列出所有存在合并冲突的文件:
git ls-files -u
输出结果的第三列即为冲突文件路径。
场景2:已执行git add标记冲突已解决、但未提交合并结果
可以通过比对两个合并分支的共同祖先,提取同时在两个分支被修改的文件(即本次合并产生过冲突的文件),命令如下:
base=$(git merge-base HEAD MERGE_HEAD) comm -12 <(git diff --name-only $base HEAD | sort) <(git diff --name-only $base MERGE_HEAD | sort)
不管你解决冲突时选择保留哪个分支的版本,该命令都会输出所有参与过本次合并冲突的文件列表,完全适配你描述的场景。
可选优化:配置Git别名
你可以把上述逻辑配置为自定义Git命令,后续使用更便捷:
git config --global alias.conflict-files '!f() { base=$(git merge-base HEAD MERGE_HEAD); comm -12 <(git diff --name-only $base HEAD | sort) <(git diff --name-only $base MERGE_HEAD | sort); }; f'
配置完成后,只要是在合并未提交的状态下,直接运行git conflict-files就能直接得到冲突文件列表。
内容的提问来源于stack exchange,提问作者OfirD
相关产品推荐
相关产品推荐

