So klonen Sie ein bestimmtes Tag


188

Von git-clone (1) Handbuchseite

--branch kann auch Tags nehmen und den HEAD bei diesem Commit im resultierenden Repository trennen.

Ich habe es versucht

git clone --branch <tag_name> <repo_url>

Aber es funktioniert nicht. Es gibt zurück:

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

Wie benutze ich diesen Parameter?



2
Du hast recht, aber wenig Unterschied. Wenn ich diese Frage stelle, musste ich dies in meiner Situation in einer Zeile tun und verwenden clone, und ich war festgefahren, warum - Zweig funktioniert nicht “. Die beste Antwort dieser URL verwendet clone-> checkout, die meine Frage nicht lösen kann. :)
— Jiang Jun

Antworten:


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

Dieser Befehl wird in Git 1.7.9.5 nicht unterstützt.

Ich benutze Git 1.8.3.5 und es funktioniert


88
Zu Ihrer Information: Geben Sie außerdem an --depth 1, um das Herunterladen nicht aktueller Commits zu vermeiden.
— Acumenus

1
Funktioniert gut in Git 1.8.4.1
— Taco

Das funktioniert nicht. Nach dem Klonen, wenn Sie es tun git tag, zeigt es kein Tag
— Der Benutzer ohne Hut

Beachten Sie, dass der Zweig bevorzugt wird, wenn der Verweis nicht eindeutig ist und Sie einen Zweig und ein Tag mit demselben Namen haben.
— Keith Smiley

1
Was ist ein langfristiges Commit?
— d512

74

Verwenden Sie die --single-branchOption, um nur den Verlauf zu klonen, der zur Spitze des Tags führt . Dies erspart viel unnötigen Code vor dem Klonen.

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

3
Ist --single-branchgleichbedeutend mit --depth 1?
— igracia

14
Nein, es ist nicht gleichwertig. --single-branch klont den Verlauf für einen ganzen Zweig. Mit --depth 1 wird überhaupt keine Historie geklont.
— Fabian Thommen

2
Wird auch --single-branchimpliziert, wenn --depthverwendet wird. Aus dem HandbuchWhen 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    

Wird schneller sein als:

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

Oder

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 1ist ein Juwel, so viele Leute laden die gesamte Git-Geschichte herunter, nur um die zu nutzen HEAD.
— MGP

2
--depth 1sollte standardmäßig eingestellt werden; Wenn jemand versucht, ein vorheriges Commit zu überprüfen, sollte er aufgefordert werden, den Rest herunterzuladen.
— Jikku Jose

3

Verwenden Sie den Befehl

git clone --help

um zu sehen, ob dein Git den Befehl unterstützt

git clone --branch tag_name

Wenn nicht, gehen Sie einfach wie folgt vor:

git clone repo_url 
cd repo
git checkout tag_name

1

Das Klonen eines bestimmten Tags kann den Status "Trennender HEAD" zurückgeben .

Versuchen Sie als Problemumgehung, zuerst das Repo zu klonen und dann ein bestimmtes Tag auszuchecken. Beispielsweise:

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

Hinweis: Seit Git 1.8.5 können Sie -C <path>anstelle von --work-treeund verwenden --git-dir.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.