如何在Git中实现两个分支类右外连接的差异对比,仅显示dev分支独有变更
解决方案
你需要的是基于两个分支的共同祖先(也就是你说的fork分叉点),仅对比dev分支后续的变更,Git原生就支持对应操作,不需要额外工具:
核心操作
1. 快捷查看dev分支独有的所有代码变更
直接使用三点diff语法即可,和你描述的右外连接逻辑完全匹配:
git diff master...dev
注意:这里是三个英文句号,和普通双点的
git diff master dev有本质区别:
- 双点diff:直接对比两个分支最新版本的所有差异,会同时展示
master和dev各自独有的变更,也就是你说的不符合需求的普通diff- 三点diff:自动找到两个分支的共同祖先,仅对比
dev分支相对于共同祖先的所有变更,完全排除master后续新增的内容
2. 查看dev分支独有的提交列表
如果需要先看提交记录再看具体变更,可以用下面的命令:
# 简洁列表模式 git log --oneline master...dev # 带分支拓扑图的展示模式 git log --oneline --graph master...dev
3. 手动指定分叉点的通用方法
如果需要自己控制对比基准,可以先手动查找两个分支的共同分叉点:
git merge-base master dev
命令会返回分叉点的commit hash,假设返回值为abc123,之后就可以基于这个哈希自由对比:
- 查看分叉点到
dev的所有代码变更:git diff abc123 dev - 查看分叉点到
dev的所有提交:git log abc123..dev
注意事项
以上所有命令均为只读操作,不会修改你本地的分支内容,也不会影响后续的rebase、merge操作。
内容的提问来源于stack exchange,提问作者kishoredbn
相关产品推荐
相关产品推荐

