如何比较本地分支与远程分支的差异

先 git fetch 刷新远程引用,再 git diff main origin/main 看文件差异、git log main..origin/main 看远程多出的提交、git log origin/main..main 看本地多出的提交。git status 也会提示领先/落后数。

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

先 git fetch 刷新远程引用,再对比:看文件差异 git diff main origin/main;看提交差异用 git log main..origin/main(远程有的我没的)和 git log origin/main..main(我有的远程没的)。日常最省事的是 git status,首行直接告诉你领先/落后几个提交。

对比提交

git fetch origin

git log main..origin/main --oneline     # 远程多出的提交
git log origin/main..main --oneline     # 本地多出的提交
git log --left-right --oneline main...origin/main   # 双向对比(< 本地 > 远程)

对比文件改动

git diff main origin/main              # 完整 diff
git diff main origin/main --stat       # 只要统计
git diff main origin/main -- src/app.js  # 单个文件

最省事:status 与 -vv

git status         # "Your branch is ahead of 'origin/main' by 2 commits"
git branch -vv     # 每个分支的跟踪关系与 ahead/behind

注意 status 的 ahead/behind 基于上次 fetch 的引用,先 fetch 才准。

常见问题(FAQ)

Q:三点 ... 和两点 .. 在 diff/log 里有什么区别?

log A..B:B 有而 A 没有的提交;log A...B:两者各自独有的提交(对称差)。diff A..B 同 diff A B;diff A...B 是"共同祖先到 B"的差异(看 B 分支引入了什么)。

Q:不 fetch 能对比吗?

对比的是本地的远程跟踪引用(origin/main),不 fetch 就是过期数据。git fetch 随时可跑、无副作用。

Q:图形化工具有推荐吗?

VS Code 的 GitLens、JetBrains 的 Git 工具窗都能直观对比分支;命令行党用 git log --graph --oneline main origin/main 看分叉图。

参考资料

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

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

立即开始

选择观测云版本

代码托管平台