如何查看本地分支跟踪的远程分支
查看本地分支的跟踪关系:git branch -vv 列出每个本地分支对应的远程分支及领先/落后数;只查当前分支用 git rev-parse --abbrev-ref @{u} 或 git status 首行。
最直接:git branch -vv,它列出每个本地分支正在跟踪的远程分支、最后一次提交、以及与远程的领先/落后提交数。只看当前分支则用 git rev-parse --abbrev-ref @{u}。
git branch -vv
git branch -vv
输出示例:
* main 7f9c2d1 [origin/main] 更新 README
feature-x 8a9b1c2 [origin/feature-x: ahead 2] 新功能
local-only c3d4e5f 本地实验
[origin/main]:跟踪关系;ahead 2 / behind 1:领先/落后远程的提交数;- 没有方括号的分支(如 local-only):未设置上游。
只看当前分支
git rev-parse --abbrev-ref @{u} # 输出 origin/main
git status # 首行也会显示跟踪信息
git remote show origin # 看各分支的 pull/push 映射全貌
设置与修改跟踪
git branch --set-upstream-to=origin/feature-x feature-x # 改跟踪
git push -u origin feature-x # 推送并顺带建立跟踪
git branch --unset-upstream # 取消跟踪
常见问题(FAQ)
Q:@{u} 是什么语法?
@{u}(或 @{upstream})指代当前分支的上游引用,Git 的修订版本语法。可用于 diff:git diff HEAD @{u} 看你领先远程的改动。
Q:ahead/behind 数字不准怎么办?
它基于本地的远程跟踪引用,先 git fetch 刷新再看。
Q:检出远程分支时为什么自动有了跟踪?
git checkout feature-x(本地不存在、远程唯一)时 Git 自动从 origin/feature-x 建本地分支并设好跟踪,这就是所谓 DWIM 行为。