git fetch 后应先用 git diff 或 git log 查看远程与本地差异,再决定是否合并;它只更新远程跟踪分支(如 origin/main),不改动工作区,确保操作安全可控。

git fetch 后用 git diff 查看远程分支差异
直接 git pull 会跳过「看变化」这步,容易在合并时措手不及。安全做法是先 git fetch origin,它只更新 origin/main 这类远程跟踪分支,不动你本地的 main。之后用 git diff 对比,就能清楚看到远程加了什么、删了什么:
-
git diff main origin/main:显示本地main和远程最新状态之间的代码行级差异 -
git log main..origin/main:列出远程有、但本地还没有的提交(即别人推了哪些新 commit) -
git log --oneline origin/main ^main:效果同上,更简洁的写法
注意:如果当前不在 main 分支,记得把命令里的 main 换成你实际的本地分支名。
用 git branch -vv 确认分支追踪关系是否正常
很多差异没被发现,是因为本地分支根本没关联远程分支——git branch -vv 就是查这个的。输出里带 [origin/xxx] 或 [origin/xxx: ahead 2] 才算关联成功。如果某分支后面没方括号内容,说明它没设置上游(upstream),git pull 和 git push 都可能行为异常:
- 未关联时执行
git pull,Git 会报错There is no tracking information for the current branch. - 补关联用
git branch --set-upstream-to=origin/xxx xxx(把两个xxx换成实际分支名) - 或者切到该分支后直接
git push -u origin xxx,-u 参数会自动建立追踪
git ls-remote 快速检查远程分支 HEAD 是否变动
不想拉代码、只想确认远程有没有新提交?git ls-remote 是最轻量的方式,它不下载对象,只查远程引用的哈希值:
监控一个或多个 GitCode 仓库的 PR,通过 OpenClaw Gateway 自动执行 AI 审查,发布 PR 评论,并发送钉钉和企业微信通知。
-
git ls-remote --heads origin main输出类似e1f2a3d... refs/heads/main,记下这个哈希 - 过一阵再跑一次,哈希变了就说明远程
main被更新了 - 配合
git rev-parse origin/main可对比本地远程跟踪分支是否已同步(两者哈希一致才表示 fetch 过了)
这个命令适合 CI 脚本或自动化检查,也适合网络差、想避免 fetch 下载大文件的场景。
git remote show origin 显示分支推送/拉取状态
git remote show origin 不只列分支,还告诉你「哪些本地分支配置了自动 push/pull」「哪些远程分支在本地已失效」。关键信息包括:
-
Local branches configured for 'git pull':哪些本地分支设置了git pull时默认拉哪个远程分支 -
Local refs configured for 'git push':哪些本地分支设置了git push时默认推到哪(比如dev pushes to dev (local out of date)就是危险信号) -
Remote branches列表中带stale的分支,说明远程已删、但本地还留着记录,需手动git fetch --prune清理
这个命令输出稍长,但它是唯一能一次性看清「配置意图」和「实际状态」是否匹配的命令,尤其适合接手他人仓库或长期未维护的项目。

















