Passer à une autre balise Git

180

Comment extraire la version version / tag 1.1.4 du bundle rspec ?

cd ~/Library/Application\ Support/TextMate/Bundles/
git clone git://github.com/rspec/rspec-tmbundle.git RSpec.tmbundle
osascript -e 'tell app "TextMate" to reload bundles'
jspooner
la source

Réponses:

336

Clonez le référentiel comme d'habitude:

git clone git://github.com/rspec/rspec-tmbundle.git RSpec.tmbundle

Ensuite, vérifiez la balise que vous voulez comme ceci:

git checkout tags/1.1.4

Cela va extraire la balise dans un état «HEAD détaché». Dans cet état, "vous pouvez regarder autour de vous, apporter des modifications expérimentales et les valider, et [supprimer ces validations] sans affecter les branches en effectuant une autre extraction".

Pour conserver les modifications apportées, déplacez-les vers une nouvelle branche:

git checkout -b 1.1.4-jspooner

Vous pouvez revenir à la branche principale en utilisant:

git checkout master

Notez, comme cela a été mentionné dans la première révision de cette réponse, il existe une autre façon de récupérer une balise:

git checkout 1.1.4

Mais comme cela a été mentionné dans un commentaire, si vous avez une branche du même nom, cela entraînera git vous avertissant que le refname est ambigu et la vérification de la branche par défaut:

warning: refname 'test' is ambiguous.
Switched to branch '1.1.4'

Le raccourci peut être utilisé en toute sécurité si le référentiel ne partage pas les noms entre les branches et les balises.

Faux code singe Rashid
la source
78
Pour les téléspectateurs en voiture, cette réponse est ambiguë. S'il y a une branche et une balise appelée 1.1.4. Git récupérera la branche, pas la balise. Pour git checkout tags/1.1.4
retirer
2
Comment revenir au «coffre»?
Vinay W
3
@VinayWadhwa git checkout master
ABCD.ca
1
Et pour voir les balises, il suffit de sortir git tag.
ACK_stoverflow
8

À partir de Git v2.23.0 (août 2019), il git switchest préférable de git checkoutchanger simplement de branche / balise. J'imagine qu'ils l'ont fait car ils git checkoutavaient deux fonctions: pour changer de branche et pour restaurer des fichiers. Ainsi, dans la version 2.23.0, ils ont ajouté deux nouvelles commandes git switch, et git restore, pour séparer ces problèmes. Je prédirais à un moment donné dans le futur, git checkoutsera obsolète.

Pour passer à une branche normale, utilisez git switch <branch-name>. Pour basculer vers un objet de type commit, y compris des commits simples et des balises, utilisez git switch --detach <commitish>, où <commitish>est le nom de la balise ou le numéro de validation.

L' --detachoption vous oblige à reconnaître que vous êtes dans un mode «d'inspection et d'expériences jetables» . Pour créer une nouvelle branche à partir du commit vers lequel vous basculez, utilisez git switch -c <new-branch> <start-point>.

Chharvey
la source