一种上游分支分支的,或跟踪远程分支仅仅是默认情况下将使用git pull
和git push
命令时与之交互的分支。
当拉一个分支到你的,你可以明确地做到这一点:
git pull origin the_branch
,将取回远程origin
然后合并origin/the_branch
到当前的分支。
如果使用总是拉同一分支,通过设置上游分支,你可以启动git pull
:
git branch --set-upstream-to origin/the_branch
git pull
默认情况下,当你开始从远程一个新的分支,git会增加它作为上游分支:
git checkout -b origin/the_branch
# Is equivalent to
git branch --track the_branch origin/the_branch
git checkout the_branch
推时,它几乎的同样的事情。
配置push.default
将确定在使用不带参数的git push
时要推送到的默认分支。
随着值upstream
,它将简单地推入上游分支。
使用默认值simple
,它将执行相同的,但前提是本地和上游分支名称相同。
我让你看看文档来检查其他配置的可能性。
:
$ git branch -vv
* my_branch 33f2d4c [origin/mybranch] a useful commit
master 3ed8e99 [origin/master] Merge
the_branch dbbb8c0 [origin/the_branch] commit on the branch
一个分支的上游分支也可以与@{upstream}
参考被称为:
可以通过使用-vv
开关看到所有的分支的电流上游分支
$ git rev-parse --symbolic-full-name --abbrev-ref @{upstream}
origin/the_branch
推送分支作为等价的@{push}
(它将与99%的使用cas中的@{upstream}
相同ES):
$ git rev-parse --symbolic-full-name --abbrev-ref @{push}
origin/the_branch
@{upstream}
和@{push}
之间的区别是,当你使用一个三角形的工作流程的情况:您从只读“上游”项目(通常是远程按照惯例upstream
叫拉),推一个可写入的存储库。
这是在GitHub上使用分叉工作流的情况。
我发了一篇关于此的(法语)博客文章,here is the auto-translated version。
你解决了怀疑与'默认情况下,当你从远程启动一个新的分支时,git会将它添加为上游分支:'。这就是为什么我看不出差异,因为每次我在某个分支时,我都会通过'git pull'刷新它,而不必指定分支名称。我知道,如果我从检查出来的分支中拉出/推送,Git会从远端拉出那个分支。 – sandalone