我阅读了应该获取所有起源分支的问题的答案。不过,就我而言,它似乎没有给我任何分支。这是我所做的:git fetch origin
最初,一个名为 origin 的遥控器有 7 个分支。我克隆了它。git branch
然后才返回master
。我做到了git fetch origin
,git branch
但仍然只显示master
。如何在不单独获取其他 6 个分支的情况下获取它们?
您拥有所有 7 个分支,但git branch
仅显示本地分支。即使您现在在系统上本地拥有分支数据,它们仍被视为“远程分支”。您可以使用git branch -a
. 它们将被称为remotes/origin/branchname
. 您可以通过指定以下全名来查看它们:git checkout remotes/origin/branchname
.
此外,您在克隆存储库时已经获得了所有这些分支。运行git fetch origin
将简单地使用自上次获取(或克隆)以来在源上发生的任何新内容更新您的存储库。
您可以在 git 文档中阅读有关远程分支的更多信息:Git Branching - Remote Branches
尽管提问者回答了这个问题,但这是真正的问题:你感到困惑的原因是因为它会向你展示它在新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 中的所有远程分支?