克隆远程仓库后,它不会通过 -a 选项显示任何远程分支。可能是什么问题呢?如何调试呢?在此片段中,未显示两个远程分支:
$ git clone --depth 1 git://git.savannah.gnu.org/pythonwebkit.git
$ cd pythonwebkit
$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/master
$ git --version
git version 1.8.3.1
在另一台机器上试过相同的命令,效果很好:
$ git clone --depth 1 git://git.savannah.gnu.org/pythonwebkit.git
Receiving objects: 100% (186886/186886), 818.91 MiB | 3.44 MiB/s, done.
$ cd pythonwebkit/
$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/debian
remotes/origin/master
remotes/origin/python_codegen
$ git --version
git version 1.7.1
还尝试克隆另一个存储库,效果很好。虽然我可以在这台机器上再试一次,但最好知道哪里出了问题。
我们非常欢迎任何建议或提示。
编辑:答案摘要:从 git 版本 1.8.3.2 开始,“--depth”和“--no-single-branch”需要一起使用才能获得与以前相同的行为。这被视为错误修复。
最佳答案
做了一个浅克隆之后, 能够从远程检查其他分支,
运行(感谢@jthill)doc about set-branches :
git remote set-branches origin '*'
之后,执行
git fetch -v --depth=1
最后
git checkout the-branch-i-ve-been-looking-for
第 1 步也可以通过编辑 .git/config
手动完成。
例如,将以下行从:
fetch = +refs/heads/master:refs/remotes/origin/master
到(用*
替换master
):
fetch = +refs/heads/*:refs/remotes/origin/*
关于git shallow clone (clone --depth) 遗漏远程分支,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23708231/