remotes/origin/feature1
是一个没有本地跟踪分支的远程跟踪分支:
$ git branch -a
* master
mongodbutils
remotes/origin/HEAD -> origin/mongodbutils
remotes/origin/feature1
remotes/origin/master
remotes/origin/mongodbutils
当我签出不存在的分支feature1
时,为什么会自动为远程跟踪分支remotes/origin/feature1
创建本地跟踪分支?远程跟踪分支与新创建的本地跟踪分支之间的对应关系是否已配置或可配置?如何配置?
通常何时以及如何为远程跟踪分支创建本地跟踪分支?
签出与远程跟踪分支的基本名称相同名称的不存在分支是为远程跟踪分支创建本地跟踪分支的唯一方法吗?
$ git checkout feature1
Branch 'feature1' set up to track remote branch 'feature1' from 'myremote'.
Switched to a new branch 'feature1'
$ git branch -a
* feature1
master
mongodbutils
remotes/origin/HEAD -> origin/mongodbutils
remotes/origin/feature1
remotes/origin/master
remotes/origin/mongodbutils
答案 0 :(得分:2)
doc(在git checkout页面中)有关于此内置机制的明确段落:
如果未提供-b选项,则通过查看为相应的远程服务器配置的refspec的本地部分,然后剥离初始部分,从远程跟踪分支派生新分支的名称。 “ *”。这将告诉我们在分支“ origin / hack”(或“ remotes / origin / hack”,甚至“ refs / remotes / origin / hack”)时使用“ hack”作为本地分支。如果给定名称没有斜杠,或者上述猜测结果为空名称,则猜测被中止。在这种情况下,您可以使用-b明确命名。
而且,它确实非常方便,并且在jonrsharpe的评论中指出,您随时可以随时使用-b
。
最后,要回答您对配置的评论,请在git分支页面中另外passage:
当本地分支从远程跟踪分支启动时,Git会设置分支(特别是分支。
.remote和branch。 .merge配置条目),以便git pull将适当地从远程跟踪分支。可以通过全局branch.autoSetupMerge配置标志来更改此行为。可以使用--track和--no-track选项覆盖该设置,稍后使用git branch --set-upstream-to进行更改。