J'utilise git depuis environ un an et j'aimerais utiliser le balisage pour, enfin, baliser les commits sous différentes versions. J'ai trouvé de nombreuses informations sur les commandes à utiliser pour travailler avec les balises, mais j'aimerais savoir pourquoi utiliser le marquage si je peux créer une nouvelle branche appelée 1.1.0
et ne pas avoir à me troubler l'esprit avec un nouvel ensemble de commandes git?
Il doit y avoir beaucoup de bonnes raisons pour le marquage plutôt que pour la création de branches, mais j'aimerais savoir quels sont ces avantages.
Les tags sont principalement utilisés pour référence future à la version spécifique du projet, en balisant un commit. Vous pouvez toujours utiliser des branches bien sûr, mais si vous changez beaucoup de versions, vous vous retrouverez avec beaucoup de branches inutilisées ou rarement utilisées.
Dans la pratique, les balises sont des branches sans branche de toute façon, elles ajoutent simplement un moyen de référencer une version spécifique du projet afin de réduire la complexité.
Edit: Here est un bon moyen d’utiliser git que j’utilise pour tous mes projets.
Alors que vous pouvez créer une branche nommée "1.0.0" - vous, ou toute personne ayant des droits de validation, pouvez également simplement appuyer sur cette branche (délibérément ou non) et modifier la signification de 1.0.0.
Vous ne pouvez pas faire cela avec une étiquette, une fois que vous avez créé une étiquette - c'est tout; Tag 1.0.0 signifie exactement cela et ne peut pas être changé*.
C'est la principale différence pratique entre un tag et une branche
* Vous pouvez supprimer et recréer une balise, ce qui modifie une balise, mais certainement pas par accident.
J'ai tendance à utiliser un flux de travail qui intègre les deux balises et . Les balises sont utiles pour marquer le code publié ou les versions de développement remarquables. Les branches permettent de suivre toutes les modifications pertinentes pour une version spécifique.
Voici un bon article sur ce type de flux de travail: http://nvie.com/posts/a-successful-git-branching-model/
Branch et tag sont la même chose (pointeur sur un commit, aka. "ref" ), sauf que branch se déplace automatiquement vers le prochain commit tandis que le tag reste indéfiniment1 sur le même commit.
Lorsque vous publiez une version, vous souhaitez généralement marquer le "cliché" du code à partir duquel cette version a été créée, et vous souhaitez qu'il reste ainsi même lorsque vous continuez à faire évoluer le code, vous devez donc utiliser une balise.
Si vous essayiez d'utiliser une branche pour cela, elle pourrait par inadvertance passer à un commit différent, à partir duquel la version était non construite.
1 Sauf si vous supprimez le tag, bien sûr.
NOTE: Je réalise que c'est une vieille question, mais j'estimais que la similitude (et une différence cruciale) entre les branches et les balises n'avait pas été clairement indiquée dans d'autres réponses aussi clairement qu'elle aurait pu l'être. = =
Vous utilisez des balises pour noter des commits importants dans l’histoire. "C’est le commit exact que nous avons utilisé pour cette version ce jeudi de pluie quand le serveur de construction est tombé en panne". Si vous utilisez une branche au lieu d'une balise, vous ne saurez jamais quel commit vous avez utilisé. Vous savez seulement "Nous avons publié la version 1.1.0 quelque part sur cette branche", à moins que vous n'écriviez manuellement le hachage exact pour ce commit, c'est pourquoi vous utilisez des balises en premier lieu :)