如何比较两个 Git 分支的差异

比较两个分支:git diff 分支A 分支B 看代码差异;git log 分支A..分支B 看 B 独有的提交;git diff A...B(三点)看 B 自分岔点起引入的改动。合并前评审用三点更准确。

最佳实践
Git 分支协作与合并示意

看代码差异:git diff 分支A 分支B。看提交差异:git log 分支A..分支B(B 有 A 没有的提交)。 合并前想精确看"这个分支引入了什么",用三点语法 git diff A...B——它从两分支的共同祖先比起,过滤掉 A 后来新增的无关改动。

代码差异

git diff main feature-x              # 两分支当前状态的完整差异
git diff main feature-x --stat       # 只看文件统计
git diff main feature-x -- src/api/  # 只看某个目录

git diff main...feature-x            # 三点:feature-x 自分岔以来引入的改动

提交差异

git log main..feature-x --oneline    # feature-x 独有的提交
git log --left-right --oneline main...feature-x   # 双向独有提交对比

两点 vs 三点怎么选

  • 两点 A..B / git diff A B:直接对比两个端点的最终状态——A 侧新加的、B 侧没有的都会显示为"差异";
  • 三点 A...B:从共同祖先(merge-base)到 B——只反映 B 这条线上做的改动。

评审 PR、评估合并影响时用三点;回答"两个分支现在长什么样不同"用两点。

常见问题(FAQ)

Q:不切换分支能比较吗?

能,diff/log 直接接受分支名参数,无需 checkout。这也正是推荐方式。

Q:想生成两个分支差异的补丁文件?

git diff main..feature-x > changes.patch,对端 git apply 即可应用。

Q:IDE 里怎么看?

VS Code 装 GitLens 后有 Branch Compare 视图;JetBrains 的 Git 工具窗选分支 → Compare。本质都是封装的上述命令。

参考资料

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台