111 votes

Comment revenir à une balise spécifique dans Git ?

Je sais comment revenir à des commits plus anciens dans une branche Git, mais comment revenir à l'état d'une branche dicté par un tag ? J'envisage quelque chose comme ceci :

git revert -bytag "Version 1.0 Revision 1.5"

Est-ce possible ?

156voto

jurglic Points 3359

Les tags Git sont juste des pointeurs vers le commit. Vous les utilisez donc de la même manière que les HEAD, les noms de branches ou les hachages de sha commit. Vous pouvez utiliser les tags avec n'importe quelle commande git qui accepte les arguments commit/revision. Vous pouvez l'essayer avec git rev-parse tagname pour afficher le commit vers lequel il pointe.

Dans votre cas, vous avez au moins ces deux alternatives :

  1. Réinitialise la branche actuelle à une balise spécifique :

    git reset --hard tagname
  2. Générer un commit revert sur le dessus pour vous amener à l'état de la balise :

    git revert tag

Cela peut cependant introduire quelques conflits si vous avez des commits de fusion.

15voto

devnull Points 45016

Utilice git reset :

git reset --hard "Version 1.0 Revision 1.5"

(en supposant que la chaîne spécifiée est la balise).

3voto

joshi123 Points 387

Vous pouvez utiliser git checkout.

J'ai essayé la solution acceptée mais j'ai obtenu une erreur, warning: refname '<tagname>' is ambiguous'

Mais comme la réponse l'indique, les tags se comportent comme un pointeur vers un commit, donc comme vous le feriez avec un hash de commit, vous pouvez simplement vérifier le tag. La seule différence est que vous le faites précéder de tags/ :

git checkout tags/<tagname>

3voto

ZZZ Points 550

Si vous l'êtes :

  • vous êtes sûrs de l'engagement que vous voulez prendre.
  • se débarrasser de tous les commits après cela
  • appliquer les changements à votre télécommande
  1. réinitialisée à une balise nommée reset-to-here

    git reset --hard reset-to-here
  2. pousser votre changement vers le forçage à distance en +

    git push origin +master

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X