13

我阅读了应该获取所有起源分支的问题的答案。不过,就我而言,它似乎没有给我任何分支。这是我所做的:git fetch origin

最初,一个名为 origin 的遥控器有 7 个分支。我克隆了它。git branch然后才返回master。我做到了git fetch origingit branch但仍然只显示master。如何在不单独获取其他 6 个分支的情况下获取它们?

4

2 回答 2

23

您拥有所有 7 个分支,但git branch仅显示本地分支。即使您现在在系统上本地拥有分支数据,它们仍被视为“远程分支”。您可以使用git branch -a. 它们将被称为remotes/origin/branchname. 您可以通过指定以下全名来查看它们:git checkout remotes/origin/branchname.

此外,您在克隆存储库时已经获得了所有这些分支。运行git fetch origin将简单地使用自上次获取(或克隆)以来在源上发生的任何新内容更新您的存储库。

您可以在 git 文档中阅读有关远程分支的更多信息:Git Branching - Remote Branches

于 2014-02-25T17:47:42.590 回答
3

尽管提问者回答了这个问题,但这是真正的问题:你感到困惑的原因是因为它会向你展示它在git fetch遥控器上所做的事情的血腥细节,但它不会向你展示任何东西(git clone)最初克隆 repo 时。所以克隆只会创建本地主分支。因为它默认检查它。检查它会在本地创建它。

所以基本上你需要做的就是你在开始时指出的:单独检查所有分支。所以基本上你得到的是:

git branch -a | grep origin | sed "s@.*origin/@@" | while read f; do
  git checkout $f
done

可能有更多的低级“管道”命令可以做到这一点,但基本上从用户的角度来看就是这样。实际上,答案似乎是您可以直接创建本地分支。

git branch -a | grep origin | sed "s@.*origin/@@" | while read f; do
  git branch $f origin/$f
done

但这可能不会设置跟踪分支。如何克隆 Git 中的所有远程分支

于 2016-07-31T23:39:49.873 回答