在Windows 10的命令中
>git branch
* master图中只显示了一个分支,即主分支。有人告诉我还有另一个叫"staging“的分支,但我没有看到。
当我运行以下命令时
>git checkout staging
Branch staging set up to track remote branch staging from origin.
Switched to a new branch 'staging'然后
>git branch
* master
staging为什么分段分支一开始没有显示,现在又显示了?
谢谢。
发布于 2017-02-08 22:59:09
git只列出本地分支,直到您签出远程分支。
git branch -r还将列出所有远程分支
发布于 2017-02-08 23:16:14
请注意,Git表示:
切换到一个新的分支“暂存”
(强调我的)。分支staging并不存在,直到您请求Git对其进行检查。Git试图检查它,但失败了-所以它试图创建它,并成功了。这是一个内置在git checkout中的特殊操作:如果你请求按名称检出一个分支,而该名称并不对应于任何现有的分支,Git将查看是否有一个所谓的远程跟踪分支具有“足够接近”的名称。
要列出这些远程跟踪分支,请使用:
git branch --list --remotes或者将其缩写为git branch -lr。如果您有origin/zerblatt,您可以通过运行git checkout zerblatt创建您自己的zerblatt。如果你没有这样做,git checkout会抱怨zerblatt不是它能理解的分支或路径。
在评论中,你问道:
这是因为克隆操作没有拉出暂存分支,而只拉出了主分支吗?
注意Git的特殊术语:你不能通过克隆来“拉”一个分支。单词pull表示git pull命令,我建议您避免使用它:它是一个方便的快捷方式,但它会做您不希望它做的事情。
默认情况下,clone命令会克隆所有内容,但它会为您创建一个独立于其他Git存储库的私有存储库。另一个Git存储库有自己的分支,现在不同于您的分支。为了保持它们的分离,你的Git会重命名它们的所有分支:它们的master变成你的origin/master,它们的staging变成你的origin/staging。
这些origin/*名称是(您的,而不是他们的)远程跟踪分支,并对应于它们的(常规或本地)分支。你可以随心所欲地处理你自己的本地分支,但最初,Git只创建了一个分支,通常是master。
这里真正棘手的事情是分支的实际含义和含义。您可能希望阅读What exactly do we mean by "branch"? (如果您是非常新手的话,请稍后再阅读这篇文章)。Git使用了几个不同的东西,它们都被松散地称为“分支”;虽然它们都是相关的,但它们并不相同。
发布于 2017-02-08 23:20:00
在克隆存储库时,只会在克隆的存储库中创建一个“普通”(本地)分支(在您的示例中为master)。源代码库的其他分支作为“远程”分支存储在克隆的代码库中。您可以通过向git branch添加-r (仅列出远程分支)或-a (列出本地和远程分支)选项来查看它们。
在您的例子中,它可能看起来像这样
> git branch -a
* master
origin/master
origin/staging要创建一个指向与origin/staging相同的提交的新本地分支,请运行
> git branch staging origin/staging或者,要同时签出这个新分支:
> git checkout -b staging origin/staging如torek's answer所示,显式命名origin/stagin是可选的。
git签出
…
如果未找到,但在一个远程(调用它)中确实存在具有匹配名称的跟踪分支,请将其视为等效于
$ git签出-b --track /
这具有自动设置新的本地分支以跟踪远程分支的优点。
https://stackoverflow.com/questions/42116467
复制相似问题