Table des matières
Gestion des tags
Ajouter un tag
Ceci ajoute un tag lightweight:
$ git tag nom-du-tag
Ajoute un tag annoté, par exemple pour une version 5.2.1 :
$ git tag -a 5.2.1 -m "5.2.1"
Push tag
Pour pousser un tag sur origin:
$ git push origin nom-du-tag
Il n'est pas recommandé de le faire, mais on peut pousser tous les tags:
$ git push --tags
Supprimer un tag
Localement:
$ git tag -d release01
Remote:
$ git push origin :refs/tags/release01
Aussi on peut faire:
$ git push --delete origin release01
Chercher un commit par tag
On se sert de log
pour se faire. Le 4.10
est le nom du tag:
$ git --no-pager log -1 4.10 --pretty="%h - %an : %s (%ci)"
Signer des tags
Utiliser gpg2
:
GNUPG
Installer gpg2
:
$ sudo apt-get install gnupg2 -y
Dire à Git d'utiliser gpg2
:
$ git config --global gpg.program gpg2
Assigner une clé à Git:
$ gpg2 --list-keys /home/sgariepy/.gnupg/pubring.gpg --------------------------------- pub 2048R/956F5465 2017-05-03 [expires: 2018-05-03] uid Stéphane Gariépy <sgariepy@exmaple.com> sub 2048R/DD21F2BB 2017-05-03 [expires: 2018-05-03]
$ git config --global user.signingkey 956F5465
Quand on crée un tag, utiliser le -s
au lieu du -a
:
$ git tag -s 1.0.0 -m "1.0.0" $ git push origin 1.0.0
Source : Signing Your Work
Obtenir le SHA d'un commit avec un tag
$ git rev-list -n 1 <nom-du-tag>
Par exemple:
$ git rev-list -n 1 v1.0.52 c14400a7f3b633516b2d38c3550de93d4fad097a
Obtenir les tags précédents
Pour obtenir les 10 tags précédents, on peut faire:
$ git for-each-ref refs/tags --sort=-taggerdate --format='%(refname)' --count=10 refs/tags/v1.1.2 refs/tags/v1.1.1 refs/tags/v1.1.0 refs/tags/v1.0.3 refs/tags/v1.0.2 refs/tags/v1.0.1 refs/tags/v1.0.0 refs/tags/v0.9.10 refs/tags/v0.9.9 refs/tags/v0.9.8 refs/tags/v0.9.7
Avoir que les tags existants sur remote
Si quelqu'un supprime certains tags sur origin
et que quelqu'un d'autre les a localement, il peut les repousser et les recréer sur origin
. Il faut alors supprimer tous les tags localement et aller chercher ceux sur origin
.
$ git tag -l | xargs git tag -d $ git fetch --tags