我在this question的答案中读到了git fetch origin
应该获取所有原始分支的答案。在我的情况下,它似乎并没有给我任何分支。这是我做的:
最初,一个名为origin的远程有7个分支。我克隆了它。 git branch
然后仅返回master
。我做了git fetch origin
,git branch
仍然只显示master
。如何在不单独获取其他6个分支的情况下获取其他6个分支?
答案 0 :(得分:20)
您拥有所有7个分支,但git branch
仅显示本地分支。即使您现在在系统上本地拥有分支数据,它们仍被视为“远程分支”。 您可以使用git branch -a
看到它们。它们会被称为remotes/origin/branchname
。您可以通过指定此全名来查看它们:git checkout remotes/origin/branchname
。
此外,在克隆存储库时,您已经拥有了所有这些分支。运行git fetch origin
只会更新您的存储库,使用自上次提取(或克隆)以来在源上发生的任何新内容。
您可以在git文档中阅读有关远程分支的更多信息:Git Branching - Remote Branches
答案 1 :(得分:1)
虽然提问者回答了这个问题,但这是真正的交易:你感到困惑的原因是因为git fetch
会向你展示它在新>上做什么的血腥细节 remote,但是在最初克隆repo时它不会显示任何内容(git clone)。因此克隆只会创建本地主分支。因为它默认将其检出。检查出来会在本地创建它。
所以基本上你需要做的就是你在开始时指出的:单独检查所有分支。所以基本上你得到的是:
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
但这可能不会设立跟踪分支机构。来自How to clone all remote branches in Git?
的回答