如何克隆具有特定修订版的git存储库,就像我在Mercurial中通常所做的那样:
hg clone -r 3 /path/to/repository
Run Code Online (Sandbox Code Playgroud) 克隆远程存储库后,它不会通过-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
Run Code Online (Sandbox Code Playgroud)
在另一台机器上尝试相同的命令,它运作良好:
$ 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
Run Code Online (Sandbox Code Playgroud)
尝试克隆另一个回购,它运作良好.虽然我可以在这台机器上再试一次,但最好知道什么是错的.
任何建议或提示都将受到欢迎.
编辑:答案摘要:从git版本1.8.3.2开始,需要同时使用"--depth"和"--no-single-branch"来获得与以前相同的行为.这被视为错误修复.
例如,Git允许从任何给定的远程和引用中获取
git fetch <remote-url> <reference>
Run Code Online (Sandbox Code Playgroud)
因此,无需添加遥控器或创建分支即可获得提交的提交.
但是,这仅适用于引用,例如分支名称或标记,但不适用于特定哈希,因此不能直接在任何地方引用.
有没有办法从远程获取特定的提交?