git shallow clone (clone --depth) 遗漏远程分支

标签 git branch shallow-clone

克隆远程仓库后,它不会通过 -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”需要一起使用才能获得与以前相同的行为。这被视为错误修复。

最佳答案

做了一个浅克隆之后, 能够从远程检查其他分支

  1. 运行(感谢@jthill)doc about set-branches :

     git remote set-branches origin '*'
    
  2. 之后,执行 git fetch -v --depth=1

  3. 最后 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/

相关文章:

git - 如何在没有整个历史的情况下克隆种子/启动项目?

git - Delphi包在子包中与自身冲突

git - Gerrit - 当前分支和远程分支存在分歧

linux - 无法为 git 匹配 ssh key 。改为制作本地指纹?

GIT:使用 netbeans merge 两个分支

GIT:什么是 merge 期间的提交优先级?

java - 如何浅克隆未实现 Cloneable 的实例?

git - git中带有子模块的浅克隆,如何使用指向提交而不是最新提交?

python - 无法在 Windows 上使用 git-p4 导入

linux - 让git以不同的用户身份运行