如何git克隆特定标签


190

git-clone(1)手册页

--branch 也可以获取标签并在结果存储库中的提交时分离HEAD。

我试过了

git clone --branch <tag_name> <repo_url>

但这是行不通的。它返回:

warning: Remote branch 2.13.0 not found in upstream origin, using HEAD instead

如何使用此参数?



2
你是对的,但没什么区别。当我问这个问题时,在我的情况下,我需要一行执行此操作并且必须使用clone,并且我被困在“为什么--branch不起作用”的问题上。该网址的最佳答案是clone-> checkout,它无法解决我的问题。:)
姜军

Answers:


318
git clone --branch <tag_name> <repo_url>

git 1.7.9.5不支持该命令。

我使用git 1.8.3.5并且有效


89
仅供参考:还请指定--depth 1避免下载任何非当前提交。
Acumenus 2014年

1
在git 1.8.4.1中工作正常
taco

这行不通。克隆后(如果执行git tag此操作)则不显示标签
没有帽子的用户

请注意,如果ref模棱两可,并且您有一个分支和一个名称相同的标签,则将首选该分支。
基思笑脸

1
什么是非当前提交?
d512

74

使用--single-branch选项仅复制导致标签尖端的历史。这样可以避免大量不必要的代码被克隆。

git clone <repo_url> --branch <tag_name> --single-branch

3
--single-branch相当于--depth 1
igracia '16

14
不,不一样。--single-branch克隆整个分支的历史记录。使用--depth 1根本不会克隆任何历史记录。
Martin Krung

2
使用时也--single-branch隐含--depth。从手册When creating a shallow clone with the --depth option, this is the default
柯达

33
git clone -b 13.1rc1-Gotham  --depth 1  https://github.com/xbmc/xbmc.git
Cloning into 'xbmc'...
remote: Counting objects: 17977, done.
remote: Compressing objects: 100% (13473/13473), done.
Receiving objects:  36% (6554/17977), 19.21 MiB | 469 KiB/s    

将比:

git clone https://github.com/xbmc/xbmc.git
Cloning into 'xbmc'...
remote: Reusing existing pack: 281705, done.
remote: Counting objects: 533, done.
remote: Compressing objects: 100% (177/177), done.
Receiving objects:  14% (40643/282238), 55.46 MiB | 578 KiB/s

要么

git clone -b 13.1rc1-Gotham  https://github.com/xbmc/xbmc.git
Cloning into 'xbmc'...
remote: Reusing existing pack: 281705, done.
remote: Counting objects: 533, done.
remote: Compressing objects: 100% (177/177), done.
Receiving objects:  12% (34441/282238), 20.25 MiB | 461 KiB/s

6
--depth 1是一个宝石,所以许多人下载整个git历史只是为了使用HEAD
MGP 2014年

2
--depth 1应该设为默认值;如果有人尝试取消先前的提交,则应提示他们下载其余提交。
Jikku Jose

3

使用命令

git clone --help

看看你的git是否支持命令

git clone --branch tag_name

如果没有,请执行以下操作:

git clone repo_url 
cd repo
git checkout tag_name

1

克隆特定标签可能会返回“分离头”状态

解决方法是,尝试先克隆存储库,然后签出特定标签。例如:

repo_url=https://github.com/owner/project.git
repo_dir=$(basename $repo_url .git)
repo_tag=0.5

git clone --single-branch $repo_url # using --depth 1 can show no tags
git --work-tree=$repo_dir --git-dir=$repo_dir/.git checkout tags/$repo_tag

注:由于Git的1.8.5,您可以使用-C <path>,而不是,--work-tree--git-dir

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.