跳至内容
GitTree
Git 指南阅读 1 分钟

如何在 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 -ugit remote add upstream <url>
检查与git branch -vvgit remote -v

如何在 GitTree 中设置上游

  1. 发布新分支

    签出分支后,按 Push。 GitTree 表示该分支尚未跟踪远程分支并请求 Remote。

  2. 选择远程仓库

    选择 origin 并按 Push to origin。分支是在那里创建的,并从那时起对其进行跟踪。

  3. 改变它追踪的内容

    右键单击分支标签并打开上游,然后设置上游...。选择 上游分支 并按 跟踪,或选择 取消设置上游。

GitTree 中分支上的上游子菜单,标记有“设置上游...”。
GitTree 中分支上的上游子菜单,标记有“设置上游...”。GitTree 与演示存储库的接口。

请参阅设置跟踪并发布分支 了解详细信息,并参阅远程和上游课程 进行练习。

常见问题

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日 的官方页面进行了检查。价格和功能发生变化;供应商的页面是事实的来源。