HOWTO · Git
Git 设置上游分支
了解如何为 Git 配置上游跟踪关系,以便跟踪远程分支。
本页内容
上游分支是本地分支所跟踪的远程跟踪分支。配置好这种关联后,Git 就能推断常见的 git pull 和 git push 操作要比较或使用哪个远程分支。请根据远程分支是否尚未发布、已经存在,或需要首次检出到本地来选择命令。
上游分支的作用
跟踪关系会将一个本地分支关联到一个远程跟踪分支,例如本地 my-feature-branch 对应 origin/my-feature-branch。这种关联本身不会合并分支,也不会复制提交。它为 Git 提供默认的目标分支和比较基准,因此之后执行拉取和推送时通常可以省略远程仓库名和分支名。
对于引用远程跟踪分支的命令,该分支必须已存在于本地仓库中。从远程仓库获取更新时,远程跟踪分支也会随之更新。以下示例使用 origin 作为远程仓库名,使用 my-feature-branch 作为分支名;请替换为你仓库中的实际名称。
推送新分支时设置上游
如果本地分支尚未发布,可以运行 git push origin my-feature-branch 发布分支,但不配置跟踪关系。此命令会将分支推送到 origin,之后推送时仍需指定远程仓库和分支。若要在一次操作中发布分支并配置跟踪关系,请运行 git push --set-upstream origin my-feature-branch;-u 是它的简写。配置好跟踪关系后,之后推送时通常可以省略远程仓库名和分支名。
小型格式化程序可以帮助检查参数顺序。它会打印供你执行的命令,但不会调用 Git 或发布分支。
运行以下示例:
本节中的代码以及显示的标签或输出仍为英文。
branch = "my-feature-branch"
remote = "origin"
print(f"git push --set-upstream {remote} {branch}")
以下代码示例及其显示的标签和输出保持英文。
git push --set-upstream origin my-feature-branch
在你的仓库中执行 Git 命令后,远程分支就会创建,当前本地分支也会跟踪该分支。--set-upstream-to 选项属于 git branch;它不是用于发布新分支的推送选项。
为现有本地分支设置上游
如果本地分支和对应的远程跟踪分支都已存在,请切换到该本地分支,并使用 git branch --set-upstream-to=origin/my-feature-branch 设置上游。简写形式是 git branch -u origin/my-feature-branch。
这些写法配置的是当前本地分支。请先确认自己位于要关联的分支上,例如执行 git checkout my-feature-branch;如果远程跟踪引用中还没有 origin/my-feature-branch,则先获取远程更新。此操作只会更改分支关联,不会推送提交。
创建跟踪远程分支的本地分支
如果远程仓库中已有该分支,但本地仓库中还没有,可以使用 git checkout -b my-feature-branch origin/my-feature-branch 从远程跟踪分支创建并切换到本地分支。这种常用的检出写法会创建本地分支,并将其上游设为指定的远程跟踪分支。
本地分支名不能已被占用,而且远程跟踪引用必须可用;如有需要,请先获取远程更新。这与发布新的本地分支不同:此处是以远程分支作为本地分支的起点。
检查或移除上游分支
在本地分支上运行 git status,即可检查它与上游的关系。如果 Git 能比较两侧的状态,结果会显示本地分支领先、落后或与上游分叉,帮助你决定是否推送、拉取或协调提交。如果状态信息未显示跟踪关系,请确认已配置上游,并且已获取远程跟踪引用。
要停止跟踪远程分支,请在本地分支上运行 git branch --unset-upstream。此操作只会移除跟踪关系,不会删除本地分支、远程分支或提交。之后可以用 git branch --set-upstream-to=<remote>/<branch> 设置其他上游。