如何在本地PC上获取所有远程分支?

时间:2018-04-10 07:13:26

标签: git

我有一个非常大的存储库。为了克隆这个,我从上到下一个接一个地使用了以下命令。

git clone --depth=1 <url>
git fetch --depth=100
git fetch --depth=1000
git fetch --unshallow
git fetch origin
git pull --all

但我无法从远程获取所有分支。我只能通过git branch -a命令

看到以下分支
* master
remotes/origin/HEAD -> origin/master
remotes/origin/master

如何从远程获取所有分支?

2 个答案:

答案 0 :(得分:2)

根据您对错误的评论,可以在fatal: early EOF fatal: index-pack failed ingyhere找到部分答案。由于您需要所有分支,因此需要添加标记。运行

git clone --depth=1 --no-single-branch <url>
git branch -a

确保在继续之前看到所有分支。 no-single-branch是重要的补充。

来自男人:

  

- 深度

     

创建一个浅层克隆,其历史记录被截断为指定的提交次数。 意味着 - 单个分支,除非    - 没有单一分支来获取附近的历史记录              所有分支的提示。如果要浅层克隆子模块,还要传递--shallow-submodules。

single-branch默认为遥控器的主HEAD,在您的情况下为主。

这将获得所有提交,以便您在每个分支中有一个提交。我不确定他们是否会被连接。现在你可以逐个拉它们,或者

git fetch --unshallow
git pull --all

按照上面的回答。以上答案还说明了

git config --global core.compression 0

在失败的情况下,一切都可能有所帮助。

答案 1 :(得分:1)

您可以尝试其他方法。 首先创建一个空的仓库git init

然后设置您要克隆的仓库的远程URL git remote add origin git@github.com:User/UserRepo.git。 然后使用git fetch获取。

这样你也可能会失败,但git fetch会保留他已经取得的东西。所以尝试取几次就完成了。

要继续调用git fetch成功,您可以尝试:until git fetch; do echo "Trying Again.."; done