如何用Git CLI复刻IntelliJ的合并提交详情功能
Git CLI 复刻 IntelliJ 合并提交 Combined Diff 及查看冲突文件方法
1. 用原生Git CLI复刻IntelliJ的合并提交Combined Diff
IntelliJ展示的合并提交combined diff,本质是将合并结果分别与两个父提交对比的内容,对应git show <merge_commit_sha> -m的输出。要精确复刻该效果,有两种方式:
- 使用
git show:直接执行git show <merge_commit_sha> -m-m参数会将合并提交拆分为两个虚拟提交,分别与父提交#1、#2进行对比,输出格式和内容与IntelliJ展示的完全一致。 - 使用
git diff:通过组合参数实现
其中:git diff --cc --combined-all-paths <merge_commit_sha>^!^!表示对比合并提交与其所有父提交的差异;--cc生成combined格式的diff,展示合并结果与父提交的对比;--combined-all-paths会显示合并过程中涉及的所有文件(包括无冲突但内容被修改的文件),完整覆盖IntelliJ展示的文件范围。
2. 查看合并提交中需手动解决冲突的文件
要找出合并提交中曾存在冲突、需要手动解决的文件,可通过以下方法:
- 方法一:从combined diff中识别
执行git diff --cc <merge_commit_sha>^!,输出中带有|||||||分隔线的文件即为曾存在冲突的文件。这类文件的diff会同时展示父提交#1、父提交#2以及最终合并结果的内容,是冲突解决的典型特征。 - 方法二:直接筛选冲突文件
执行以下命令,直接列出合并时产生冲突的文件:git diff --name-only --diff-filter=U <merge_commit_sha>^1 <merge_commit_sha>^2--diff-filter=U会筛选出两个父提交之间处于"Unmerged"状态的文件,也就是合并过程中需要手动解决冲突的文件。
内容的提问来源于stack exchange,提问作者Max
相关产品推荐
相关产品推荐

