首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么git分支没有显示分支?

为什么git分支没有显示分支?
EN

Stack Overflow用户
提问于 2017-02-08 22:56:30
回答 3查看 273关注 0票数 2

在Windows 10的命令中

代码语言:javascript
运行
复制
>git branch
* master

图中只显示了一个分支,即主分支。有人告诉我还有另一个叫"staging“的分支,但我没有看到。

当我运行以下命令时

代码语言:javascript
运行
复制
>git checkout staging
Branch staging set up to track remote branch staging from origin.
Switched to a new branch 'staging'

然后

代码语言:javascript
运行
复制
>git branch
* master
  staging

为什么分段分支一开始没有显示,现在又显示了?

谢谢。

EN

回答 3

Stack Overflow用户

发布于 2017-02-08 22:59:09

git只列出本地分支,直到您签出远程分支。

代码语言:javascript
运行
复制
git branch -r

还将列出所有远程分支

票数 2
EN

Stack Overflow用户

发布于 2017-02-08 23:16:14

请注意,Git表示:

切换到一个新的分支“暂存”

(强调我的)。分支staging并不存在,直到您请求Git对其进行检查。Git试图检查它,但失败了-所以它试图创建它,并成功了。这是一个内置在git checkout中的特殊操作:如果你请求按名称检出一个分支,而该名称并不对应于任何现有的分支,Git将查看是否有一个所谓的远程跟踪分支具有“足够接近”的名称。

要列出这些远程跟踪分支,请使用:

代码语言:javascript
运行
复制
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使用了几个不同的东西,它们都被松散地称为“分支”;虽然它们都是相关的,但它们并不相同。

票数 2
EN

Stack Overflow用户

发布于 2017-02-08 23:20:00

在克隆存储库时,只会在克隆的存储库中创建一个“普通”(本地)分支(在您的示例中为master)。源代码库的其他分支作为“远程”分支存储在克隆的代码库中。您可以通过向git branch添加-r (仅列出远程分支)或-a (列出本地和远程分支)选项来查看它们。

在您的例子中,它可能看起来像这样

代码语言:javascript
运行
复制
> git branch -a
* master
  origin/master
  origin/staging

要创建一个指向与origin/staging相同的提交的新本地分支,请运行

代码语言:javascript
运行
复制
> git branch staging origin/staging

或者,要同时签出这个新分支:

代码语言:javascript
运行
复制
> git checkout -b staging origin/staging

torek's answer所示,显式命名origin/stagin是可选的。

引用git-checkout manual

git签出

如果未找到,但在一个远程(调用它)中确实存在具有匹配名称的跟踪分支,请将其视为等效于

$ git签出-b --track /

这具有自动设置新的本地分支以跟踪远程分支的优点。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42116467

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档