Domanda Scarica un tag specifico con Git


Sto cercando di capire come posso scaricare un particolare tag di un repository Git - è una versione dietro la versione corrente.

Ho visto che c'era un tag per la versione precedente sulla pagina Web di Git, con il nome dell'oggetto di un numero esadecimale lungo.

Ma il nome della versione è "Tagged release 1.1.5"secondo il sito.

Ho provato un comando come questo (con i nomi modificati):

git clone http://git.abc.net/git/abc.git my_abc

E ho ottenuto qualcosa - una directory, un mucchio di sottodirectory, ecc.

Se è l'intero repository, come ottengo la versione che sto cercando? In caso contrario, come faccio a scaricare quella versione particolare?


1655
2018-04-27 01:15


origine


risposte:


$ git clone

ti darà l'intero repository.

Dopo il clone, puoi elencare i tag con $ git tag -l e poi checkout un tag specifico:

$ git checkout tags/<tag_name>

Ancora meglio, effettua il checkout e crea un ramo (altrimenti sarai su un ramo chiamato dopo il numero di revisione del tag):

$ git checkout tags/<tag_name> -b <branch_name>

2554
2018-04-27 01:53



git clone --branch my_abc http://git.abc.net/git/abc.git

Clonerà il repository e ti lascerà sul tag che ti interessa.

Documentazione per 1.8.0 di git clone stati.

--branch può anche accettare tag e scollegare l'HEAD in quel commit nel repository risultante.


265
2018-06-14 09:33



Non sono un esperto di git, ma penso che questo dovrebbe funzionare:

git clone http://git.abc.net/git/abc.git
cd abc
git checkout my_abc 

O

git clone http://git.abc.net/git/abc.git
cd abc
git checkout -b new_branch my_abc

La seconda variante stabilisce un nuovo ramo basato sul tag, che consente di evitare un 'HEAD distaccato'. (manuale di git-checkout)

Ogni repository git contiene l'intera cronologia delle revisioni, quindi la clonazione del repository ti dà accesso all'ultima commit, oltre a tutto ciò che è venuto prima, incluso il tag che stai cercando.


94
2018-04-27 01:54



Per verificare solo un determinato tag per la distribuzione, io uso e.g .:

git clone -b 'v2.0' --single-branch --depth 1 https://github.com/git/git.git

Questo sembra essere il modo più veloce per estrarre il codice da un repository remoto se si ha interesse solo per il codice più recente anziché in un repository completo. In questo modo, assomiglia al comando 'svn co'.


84
2017-07-28 02:35



Puoi usare git archive per scaricare una tar ball per un determinato tag o id di commit:

git archive --format=tar --remote=[hostname]:[path to repo] [tag name] > tagged_version.tar

Puoi anche esportare un archivio zip di un tag.

  1. Elenca tag:

    git tag
    
    0.0.1
    0.1.0
    
  2. Esporta un tag:

    git archive -o /tmp/my-repo-0.1.0.zip --prefix=my-repo-0.1.0/ 0.1.0
    
  3. Gli appunti:

    • Non è necessario specificare il formato. Sarà raccolto dal nome del file di output.
    • Specificando il prefisso, il tuo codice verrà esportato in una directory (se includi una barra finale).

71
2017-12-09 21:46



Usa il --single-branch interruttore  (disponibile a partire da Git 1.7.10). La sintassi è:

git clone -b <tag_name> --single-branch <repo_url> [<dest_dir>] 

Per esempio:

git clone -b 'v1.9.5' --single-branch https://github.com/git/git.git git-1.9.5

Il vantaggio: Git riceverà oggetti e (sarà necessario) risolvere delta solo per il ramo / tag specificato - mentre verifichi la stessa quantità di file! A seconda del repository sorgente, questo ti farà risparmiare molto spazio su disco. (Inoltre, sarà molto più veloce.)


40
2018-06-25 06:28



prima recupera tutti i tag in quel telecomando specifico

git fetch <remote> 'refs/tags/*:refs/tags/*'

o semplicemente scrivi

git fetch <remote>

Quindi controlla i tag disponibili

git tag -l

quindi passare a quel tag specifico usando il comando below

git checkout tags/<tag_name>

Spero che questo ti aiuti!


21
2017-09-10 18:57



Ho controllato il git checkout documentazione, ha rivelato una cosa interessante:

git checkout -b <new_branch_name> <start_point>   , dove <start_point> è il nome di un commit   a quale iniziare la nuova filiale;   Il valore predefinito è HEAD

Quindi possiamo menzionare il nome del tag (dato che il tag non è altro che il nome di un commit) come, ad esempio:

>> git checkout -b 1.0.2_branch 1.0.2
più tardi, modifica alcuni file 
  >> git push --tags

P.S: In Git, non è possibile aggiornare direttamente un tag (poiché il tag è solo un'etichetta per un commit), è necessario eseguire il checkout dello stesso tag di un ramo e quindi eseguire il commit su di esso e quindi creare un tag separato.


14
2018-04-26 14:39



Se i tuoi tag sono ordinabili usando linux sort comando, usa questo:

git tag | sort -n | tail -1

per esempio. Se git tag ritorna:

v1.0.1
v1.0.2
v1.0.5
v1.0.4

git tag | sort -n | tail -1 produrrà:

v1.0.5

git tag | sort -n | tail -2 | head -1 produrrà:

v1.0.4

(perché hai chiesto il secondo tag più recente)

per eseguire il checkout del tag, prima clonare il repository, quindi digitare:

git checkout v1.0.4

..o qualsiasi tag di cui hai bisogno.


14
2018-05-12 12:23