特定のタグをgit cloneする方法


192

gitのクローン(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
あなたは正しいですが、ほとんど違いはありません。この質問をするとき、私の状況では、これを1行で行う必要がありclone、を使用する必要があり、「なぜ--branchが機能しないのか」で行き詰まっていました。使用したそのURLの最良の回答clone-> checkout、これは私の質問を解決できません。:)
Jiang Jun

回答:


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

このコマンドはgit 1.7.9.5ではサポートされていません。

私はgit 1.8.3.5を使用し、それは動作します


92
参考:--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

14
いいえ、同等ではありません。--single-branchは、ブランチ全体の履歴を複製します。--depth 1を指定すると、履歴はまったく複製されません。
Martin Krung、

2
また--single-branch時に暗示されて--depth使用されています。マニュアルよりWhen creating a shallow clone with the --depth option, this is the default
koda

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

特定のタグを複製すると、「切り離されたHEAD」状態が返される場合があります。

回避策として、最初にリポジトリを複製してから、特定のタグをチェックアウトしてください。例えば:

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.