我在远程仓库有两个分支 - 主和开发。
现在,在克隆存储库之后,我在名为master
的唯一本地分支上。在git checkout development
之后,这是我收到的消息:
分支开发设置为从源跟踪远程分支开发。 切换到新的分支'开发'
这究竟是怎么回事?我没有指定-b
标志来创建新的本地分支。如果我改为git checkout adasdasd
,我会得到error: pathspec 'asdasdasd' did not match any file(s) known to git.
,这是有道理的。但它只是一些默认的git行为(如果checkout中指定的名称与远程分支匹配,则创建本地分支)?
简而言之,它看起来像git checkout development
,第一次运行,实际执行git checkout -b development origin/development
。
答案 0 :(得分:2)
是的,如果您签出一个作为远程存在的分支,它会假定您要创建一个跟踪远程分支的分支。
来自文档:
如果找不到但是在一个遥控器(称为< remote>)中确实存在跟踪分支,并且具有匹配的名称,则视为等效于
$ git checkout -b <branch> --track <remote>/<branch>
这在很多时候显然非常有用 - 这通常是人们想要做的事情。如果您希望您的分支基于您当前的分支,而不是具有相同名称的远程跟踪分支,或者如果存在名称冲突,那么它很烦人。
如果你做git checkout -b foo
,这不会发生。请注意,如果您还没有名为foo
的分支,那么无论如何这都是您想要的。
答案 1 :(得分:0)
这只是意味着您克隆的存储库在远程(GitHub)上具有development
分支。
克隆它时,所有远程分支也被克隆。这就是git checkout development
工作的原因(在development
分支上切换你)。
如果您发现此意外,可以从遥控器中删除它:
git push origin --delete development
要在遥控器上推一个分支(你可能在GitHub上推动你的分支时这样做了):
git push origin development
# or
git push --all # this will push all your branches