如何在Git中对比指定提交范围差异并忽略合并提交?
解决方法:忽略master合并内容,仅评审feature分支的修复变更
针对你这种在feature分支多次合并master后,只想评审F到O之间的修复变更(排除master合并内容)的情况,这里有几个实用的Git命令方案,不用变基也能搞定:
1. 先确认要评审的提交范围
首先,你可以先列出F到O之间仅属于feature分支的修复提交(自动排除master合并过来的内容和合并提交):
git log --oneline --no-merges F..O --not master
--no-merges:过滤掉所有合并提交(那些把master合并到feature的提交)--not master:排除所有在master分支上已经存在的提交
这样输出的就是你真正需要评审的修复提交列表,一目了然。
2. 查看修复提交的总变更对比
如果想一次性对比这些修复内容相对于F的整体差异,用这个命令:
git diff F O -- $(git diff --name-only F O --not master)
它的逻辑是:
- 先通过
git diff --name-only F O --not master找出F到O之间,仅在feature分支上修改的文件 - 再用
git diff F O只对比这些文件的差异,自动忽略master合并带来的内容
3. 逐个查看单个修复提交的细节
如果需要逐个评审每个修复提交的具体改动,用这个命令直接显示每个提交的diff:
git log --patch --no-merges F..O --not master
这样会按提交顺序,依次展示每个修复提交的代码变更,方便你逐行评审。
4. 快速定位feature独有的提交
还可以用git cherry命令,快速标记出feature分支上相对于master的独有提交:
git cherry master F O
输出中标记为+的就是你需要评审的修复提交,之后可以用git show <提交ID>查看单个提交的详细diff。
这些方法都不需要变基操作,完美避开你提到的变基困难问题,直接聚焦在你需要评审的修复内容上。
内容的提问来源于stack exchange,提问作者pilau
相关产品推荐
相关产品推荐

