我有一个非常大的存储库。为了克隆这个,我从上到下一个接一个地使用了以下命令。
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
如何从远程获取所有分支?
答案 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