Come clonare un tag specifico


192

Dalla pagina di manuale di git-clone (1)

--branch può anche prendere tag e scollegare HEAD in corrispondenza di tale commit nel repository risultante.

Provai

git clone --branch <tag_name> <repo_url>

Ma non funziona Restituisce:

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

Come usare questo parametro?



2
Hai ragione, ma poca differenza. Quando faccio questa domanda, nella mia situazione, avevo bisogno di farlo in una riga e devo usare clone, ed ero bloccato sul "perché - il branco non funziona". La migliore risposta di quell'URL ha usato clone-> checkout, che non può risolvere la mia domanda. :)
Jiang Jun

Risposte:


327
git clone --depth 1 --branch <tag_name> <repo_url>

--depth 1 è facoltativo, ma se è necessario solo lo stato in quella revisione, probabilmente si desidera saltare il download di tutta la cronologia fino a quella revisione.


92
Cordiali saluti: specificare anche --depth 1per evitare il download di commit non correnti.
Acumenus,

1
Funziona bene in git 1.8.4.1
taco

Questo non funziona Dopo il clone, se lo fai git tagnon mostra alcun tag
L'utente senza cappello

Nota se il riferimento è ambiguo e hai un ramo e un tag chiamato la stessa cosa, questo preferirà il ramo.
Keith Smiley,

1
Che cos'è un commit non corrente?
d512,

74

Utilizzare l' --single-branchopzione per clonare solo la cronologia che porta alla punta del tag . Ciò consente di evitare la clonazione di molti codici non necessari.

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

3
È --single-branchequivalente a --depth 1?
igracia,

14
No, non è equivalente. --single-branch clona la storia di un intero ramo. Con --depth 1 non viene clonata alcuna cronologia.
Martin Krung,

2
Inoltre --single-branchè implicito quando --depthviene utilizzato. Dal manualeWhen 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    

Sarà più veloce di:

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

O

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è un gioiello, così tante persone scaricano l'intera storia di git solo per usare il HEAD.
MGP,

2
--depth 1dovrebbe essere reso predefinito; se qualcuno tenta di eseguire il chechout di un commit precedente, dovrebbe essere richiesto di scaricare il resto.
Jikku Jose,

3

Usa il comando

git clone --help

per vedere se il tuo git supporta il comando

git clone --branch tag_name

In caso contrario, procedi come segue:

git clone repo_url 
cd repo
git checkout tag_name

1

La clonazione di un tag specifico, potrebbe restituire lo stato 'scollegato HEAD' .

Per ovviare al problema, provare prima a clonare il repository, quindi a verificare un tag specifico. Per esempio:

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

Nota: da Git 1.8.5 , è possibile utilizzare -C <path>, anziché --work-treee --git-dir.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.