针对 Git
远程仓库的上游分支/远程跟踪分支的详细说明 ⑅︎◡̈︎*
- 注:本文所使用到的
追踪
和跟踪
同义。
在之前的文章中,我曾提到如下内容:
如果当前分支与远程分支之间存在 追踪关系
,则本地分支和远程分支都可以省略:
$ git push origin # 将本地当前分支推送到origin主机的对应分支
如果当前分支只有一个远程的 追踪分支
,那么主机名都可以省略:
$ git push
而当我在本地的某目录下执行 git push
的命令时,终端报错信息如下:
$ git push # 执行该命令出现报错
fatal: 当前分支 master 没有对应的上游分支。
为推送当前分支并建立与远程上游的跟踪,使用
git push --set-upstream origin master
那么问题来了,我明明对本地仓库设置了对应的远程仓库地址,为什么没有 上游分支
呢?什么叫做 上游分支
?
「 Pro Git 」书中的原文曾提到:
Checking out a local branch from a
remote-tracking branch
automatically creates what is called a “tracking branch
” (and the branch it tracks is called an “upstream branch
”).
翻译如下:
从远程分支检出一个本地分支,这个本地分支被称作跟踪分支,它跟踪的的分支被称作上游分支。
简单的说就是,upstream
就是本地分支(也叫追踪分支)对应的 远程跟踪分支(也叫上游分支)
,push、pull 或 fetch 时如果不指定 远程分支
(一般默认叫 master
),就会自动使用 upstream 分支。
git push --set-upstream origin master
就是将一个已存在的远程分支 ( master ) 设定成远程跟踪分支。在你设定了远程跟踪分支后,才能够正常使用 git push
。
在了解以上内容后,我在终端中输入:
$ git push --set-upstream origin master
# 提示信息如下:
分支 'master' 设置为跟踪来自 'origin' 的远程分支 'master'。
Everything up-to-date
其中 Everything up-to-date
表示,本地仓库已推送到远程仓库,所有内容都已是最新版本。
说明设置上游分支成功。