如何在 Git 中设置上游分支
上游是本地分支推送和拉取的远程分支。以下是如何设置、检查、更改和删除分支,如何修复“无上游分支”错误,以及 upstream 在分叉上的含义。
撰写者 Kodmora
GitTree 背后的软件公司
- 分支
- 远程仓库和推送
在此页面上
要推送新分支并设置其上游,请运行 `git push -u origin my-branch`。 如果远程分支已存在,请改为运行 git branch -u origin/my-branch。之后,普通的 git push 和 git pull 就知道该去哪里。 -u 是 --set-upstream 的缩写。
Git 中的上游分支是什么?
上游也称为跟踪分支,是链接到本地分支的远程分支。 Git 使用该链接来做三件事:git pull 和 git push 不带参数的位置、git status 中前后计数的比较以及简写 @{u} 的含义。
如何设置新分支的上游?
git switch -c feature/search
git push -u origin feature/search这将在远程创建分支并链接两者。第一次推送时您只需要 -u。 创建和切换分支指南 涵盖了这一步之前的步骤。
如何为现有分支设置上游?
当远程分支已经存在时,链接它而不推送:
# the branch you are on
git branch -u origin/feature/search
# any other branch
git branch -u origin/main main长形式是git branch --set-upstream-to=origin/main。如果 Git 提示远程分支不存在,请先运行 git fetch。
如何解决“当前分支没有上游分支”?
当您在从未推送过的分支上运行 git push 时,Git 会打印以下内容:
fatal: The current branch feature/search has no upstream branch.
To push the current branch and set the remote as upstream, use
git push --set-upstream origin feature/search运行它建议的命令。要停止看到错误,请让 Git 在每次第一次推送时执行此操作(Git 2.37 或更高版本):
git config --global push.autoSetupRemote true相关消息“当前分支没有跟踪信息”来自git pull。修复方法相同:git branch -u origin/my-branch。
如何查看分支跟踪的内容?
# every branch, with its upstream and ahead/behind
git branch -vv
# only the current branch
git rev-parse --abbrev-ref @{u}
# commits you have not pushed
git log @{u}..
# commits you have not pulled
git log ..@{u}如何更改或删除上游?
# point the branch somewhere else
git branch -u origin/develop
# stop tracking anything
git branch --unset-upstream这两个命令都不会更改任何提交。他们仅编辑 .git/config 中的分支设置。
分叉上的上游是什么意思?
这个词还有第二个含义。在分叉上,按照惯例,upstream 是 远程 的名称:您分叉的原始项目,而 origin 是您自己的副本。这就是“git远程添加上游”的含义:
git remote add upstream https://github.com/original/project.git
git fetch upstream
git switch main
git merge upstream/main
git push origin main| 上游分支 | 上游远程 | |
|---|---|---|
| 它是什么 | 本地分支跟踪的远程分支 | 名为 upstream 的远程仓库,通常是 fork 的原始版本 |
| 设置为 | git push -u 或 git branch -u | git remote add upstream <url> |
| 检查与 | git branch -vv | git remote -v |
如何在 GitTree 中设置上游
发布新分支
签出分支后,按 Push。 GitTree 表示该分支尚未跟踪远程分支并请求 Remote。
选择远程仓库
选择
origin并按 Push to origin。分支是在那里创建的,并从那时起对其进行跟踪。改变它追踪的内容
右键单击分支标签并打开上游,然后设置上游...。选择 上游分支 并按 跟踪,或选择 取消设置上游。

常见问题
git push -u 是做什么的?
它推送分支并将远程分支记录为其上游,因此后面的 git push 和 git pull 不需要参数。
我每次推送都需要 -u 吗?
不,每个分支只能一次。该设置将保留在 .git/config 中,直到您进行更改。
原产地和上游有什么区别?
origin 是您克隆的远程服务器的默认名称。 upstream 要么是本地分支跟踪的分支,要么按照惯例是指向您分叉的项目的第二个远程分支。
@{u} 是什么意思?
它是当前分支上游的简写,因此 git diff @{u} 会将您的分支与其跟踪的远程分支进行比较。 @{upstream} 是长形式。
为什么我的分支推送到错误的远程分支?
它的上游指向那里,通常是在重命名之后。运行 git branch -vv 来查看它,然后运行 git branch -u origin/correct-name 来修复它。
来源
有关其他产品的声明已根据其位于 2026年11月7日 的官方页面进行了检查。价格和功能发生变化;供应商的页面是事实的来源。
