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 revenir à un état stable et connu.

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

Solution

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 le tag en utilisant git push origin v1.2.

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

Il y a également un bon chapitre sur le [tagging] (http://git-scm.com/book/en/Git-Basics-Tagging) dans le livre Pro Git.

Avertissement: Ceci crée des balises avec la date actuelle (et cette valeur est celle qui sera affichée sur une page de publication GitHub, par exemple). Si vous souhaitez que la balise soit datée de la date de livraison, veuillez consulter une autre réponse.

Commentaires (6)

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 actuelle (lorsque vous avez exécuté la commande git tag), non la date du commit. L'aide Git pour tag comporte une section _"On Backdating Tags"_ 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 à l'intérieur de l'objet tag ; ces données dans l'objet tag affectent, par exemple, l'ordre des balises dans l'interface gitweb. _

Pour définir la date utilisée dans les futurs objets 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 "How to Tag in 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 pouvons 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"
Commentaires (4)

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

git tag v1.0.0 f4ba1fc

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

Commentaires (0)