首页/开发/Git 与协作速查/git push -u 建立跟踪关系
Git 基础与命令88 条

git push -u 建立跟踪关系

推送新分支时用 -u/--set-upstream 记录上游:之后 git push、git status 与 git pull 都能直接对应远端分支。

Git 与协作速查开发更新于 2026-10-13

git push -u 是什么

推送新分支时加 -u(等同 --set-upstream),除了把分支推上去,还会记录这条本地分支跟踪哪个远端分支。建立了这层关系之后,git push、git pull、git status 都能自动对应到正确的远端,命令不必再写全远端名与分支名。

为什么值得一开始就设置

没有上游关系的分支,很多命令都要显式写出目标,容易推错地方;有了上游,git status 会直接显示领先与落后多少条提交,推送前一眼就知道会发生什么。团队协作里,这条关系也是评审平台判断「哪个分支对应哪个合并请求」的依据之一。

基本信息

适用平台Linux / macOS / Windows(Git 2.x)
语法git push -u <远端> <分支>
作用推送并记录上游分支关系
查看关系git branch -vv 显示上游与领先落后数
自动设置push.autoSetupRemote=true 可自动建立
常见远端名origin,克隆时自动建立

典型使用场景

  • 首次推送新分支:推上去同时建立跟踪,后续命令可省略参数
  • 核对跟踪关系:用 branch -vv 检查每条本地分支对应哪条远端分支
  • 推送前自检:确认推送目标没有指向错误的分支
  • 平台协作:让评审平台能正确关联分支与合并请求
  • 迁移远端:远端改名后用 -u 重新指向新位置

常用示例

常用示例
git push -u origin feature/login   # 推送并建立上游关系
git branch -vv                     # 查看所有分支的上游与领先落后
git status -sb                     # 显示当前分支的跟踪状态
git push                           # 有了上游之后可省略参数
git branch -u origin/feature/login # 为已有分支补设上游
git config --global push.autoSetupRemote true   # 自动建立跟踪

有无上游的差别

场景有上游关系无上游关系
git push推当前分支到上游需要显式写远端与分支
git pull拉取上游更新需要显式指定目标
git status显示领先落后数不显示对应关系
推送目标由跟踪关系决定靠参数决定,容易写错
上线前双人复核的常见动作:用 branch -vv 一眼确认每个本地分支跟的是哪个远端分支,避免推错目标。
同名远端分支存在时容易建错跟踪关系。推送前先用 branch -vv 核对目标,建立后再用 status 复核一遍。

易错点

  • 同名远端分支存在时容易建错跟踪,推送前用 git branch -vv 核对目标
  • 跟踪关系建立后 git status 才显示领先落后数,偏离预期时先查再推
  • 远端改名或删除后旧的上游关系会失效,需要重新用 -u 指定
  • 在错误的远端上建立跟踪会让后续所有推送都落到错误仓库

数据来源与参考

  • Git 官方文档:git-push(-u/--set-upstream)
  • Git 官方文档:git-branch(-vv)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌