1276 votes

Comment étiqueter un ancien commit dans Git ?

Nous sommes nouveaux dans git, et je veux définir une balise au début de notre dépôt. Notre code de production est le même que celui du dépôt de départ, mais nous avons fait des modifications depuis. Une balise au début nous permettrait de ramener la production à un état stable et connu.

Alors comment ajouter une balise à un commit arbitraire et plus ancien ?

1 votes

Je suis venu ici pour trouver de l'aide pour supprimer un ancien tag localement et sur une télécommande et j'ai finalement trouvé ceci utile, peut-être que cela aidera quelqu'un d'autre aussi : gist.github.com/mobilemind/7883996

2 votes

Et n'oubliez pas Comment pousser une balise vers un dépôt distant à l'aide de Git ? parce que Git ne va pas pousser un tag sans faire quelque chose de spécial.

1918voto

dkinzer Points 6339

Exemple :

git tag -a v1.2 9fceb02 -m "Message here"

9fceb02 est le début de l'identifiant de la livraison.

Vous pouvez ensuite pousser la balise en utilisant git push origin v1.2 .

Vous pouvez faire git log pour afficher tous les identifiants de commit dans votre branche actuelle.

Il y a également un bon chapitre sur marquage dans le livre Pro Git.

Attention : Cela crée des balises avec le nom date actuelle (et c'est cette valeur qui apparaîtra sur une page de publication GitHub, par exemple). Si vous voulez que la balise soit datée avec la date de la livraison, veuillez consulter une autre réponse .

50 votes

Vous pouvez également le faire dans le menu de clic droit de gitk - pratique si c'est ainsi que vous trouvez le SHA1 de toute façon.

145 votes

Omettre le -a et le -m "Message here" parties si vous ne voulez pas ajouter de message : git tag v1.2 9fceb02

9 votes

Vous pouvez également utiliser l'identifiant complet du commit.

242voto

Phrogz Points 112337

Juste le code

# Set the HEAD to the old commit that we want to tag
git checkout 9fceb02

# temporarily set the date to the date of the HEAD commit, and add the tag
GIT_COMMITTER_DATE="$(git show --format=%aD | head -1)" \
git tag -a v1.2 -m"v1.2"

# set HEAD back to whatever you want it to be
git checkout master

Détails

La réponse de @dkinzer crée des balises dont la date est la date du jour (lorsque vous avez exécuté la commande git tag commande), no la date de la livraison. L'aide de Git pour tag a une section _"Sur les étiquettes antidatées"_ qui dit :

Si vous avez importé des modifications d'un autre VCS et que vous souhaitez ajouter des balises pour les versions majeures de votre travail, il est utile de pouvoir spécifier la date à intégrer dans l'objet balise ; ces données dans l'objet balise affectent, par exemple, l'ordre des balises dans l'interface gitweb.

_Pour définir la date utilisée dans les futurs objets de balises, définissez la variable d'environnement GIT_COMMITTER_DATE (voir la discussion ultérieure sur les valeurs possibles ; la forme la plus courante est "YYYY-MM-DD HH:MM")._

Par exemple :

$ GIT_COMMITTER_DATE="2006-10-02 10:31" git tag -s v1.0.1

La page "Comment baliser dans Git" nous montre que nous pouvons extraire l'heure du commit HEAD via :

git show --format=%aD  | head -1
#=> Wed, 12 Feb 2014 12:36:47 -0700

Nous pourrions extraire la date d'un commit spécifique via :

GIT_COMMITTER_DATE="$(git show 9fceb02 --format=%aD | head -1)" \
git tag -a v1.2 9fceb02 -m "v1.2"

Cependant, au lieu de répéter le commit deux fois, il semble plus facile de simplement changer le HEAD pour ce commit et de l'utiliser implicitement dans les deux commandes :

git checkout 9fceb02 

GIT_COMMITTER_DATE="$(git show --format=%aD | head -1)" git tag -a v1.2 -m "v1.2"

6 votes

@ColonelPanic, votre souhait est un ordre ! github.com/lucasrangit/git-custom-commands/blob/master/

0 votes

Si vous utilisez Github pour gérer les versions et que vous vous souciez de la date indiquée sur la page /tags de votre projet, le réglage de GIT_COMMITTER_DATE est particulièrement important !

2 votes

@ColonelPanic Je vous ai donné un upvote pour le jeu de mots, et j'aimerais pouvoir vous en donner un deuxième pour le code, mais une étoile github devra faire l'affaire.

205voto

pnollet Points 648

La façon la plus simple de procéder est la suivante :

git tag v1.0.0 f4ba1fc
git push origin --tags

avec f4ba1fc étant le début du hash du commit que vous voulez marquer et v1.0.0 étant la version que vous voulez marquer.

69voto

Alireza Points 40192

OK Vous pouvez simplement le faire :

git tag -a <tag> <commit-hash>

Donc si vous voulez ajouter étiquette : 1.0.2 à valider e50f795 faites-le, tout simplement :

git tag -a 1.0.2 e50f795

Vous aussi ajouter un message à la fin, en utilisant -m quelque chose comme ça :

git tag -a 1.0.2 e50f795 -m "my message"

Après tout, vous devez le pousser jusqu'à la remote pour faire cela, il suffit de le faire :

git push origin 1.0.2 

Si vous avez de nombreuses balises et que vous ne voulez pas les mentionner une par une, faites-le tout simplement :

git push origin --tags

pour pousser tous les tags ensemble...

J'ai également créé les étapes dans l'image ci-dessous, pour plus de clarté des étapes : creating tag on a commit hash

Vous pouvez aussi placer la balise dans Hub ou en utilisant des outils comme SourceTree pour éviter les étapes précédentes, je me suis connecté à mon Bitbucket dans ce cas et de le faire à partir de là :

  1. Allez dans votre agence et trouvez le commettre à laquelle vous voulez ajouter la balise et cliquez dessus :

find your commit in bitbucket

  1. Dans le page de validation sur la droite, trouvez où il est écrit No tags et cliquez sur le + icône :

find where it says No tags

  1. Dans la case du nom de la balise, ajoutez votre balise :

add tag name

  1. Vous voyez maintenant que la balise a été créée avec succès :

enter image description here

42voto

Utilisez la commande :

git tag v1.0 ec32d32

Où v1.0 est le nom de l'étiquette et ec32d32 est le commit que vous voulez étiqueter.

Une fois que c'est fait, vous pouvez pousser les étiquettes en :

git push origin --tags

Référence :

Git (contrôle de révision) : Comment marquer un point de commit précédent spécifique dans GitHub ?

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