Je travaille actuellement avec un référentiel qui a plusieurs branches.
Lorsque je crée une étiquette, cette étiquette fait-elle référence à la branche actuelle?
En d'autres termes: chaque fois que je crée une balise, dois-je basculer sur la branche souhaitée et sur la balise à l'intérieur de cette branche pour que la balise fasse référence à cette branche à ce moment-là?
Si vous créez une étiquette, par exemple.
git tag v1.0
la balise fera référence à la dernière validation de la branche sur laquelle vous vous trouvez actuellement. Vous pouvez changer de branche et créer une étiquette à cet endroit.
Vous pouvez également simplement vous référer à l’autre branche lors du marquage,
git tag v1.0 name_of_other_branch
qui créera la balise correspondant au commit le plus récent de l’autre branche.
Ou vous pouvez simplement placer l’étiquette n’importe où, peu importe la branche, en faisant directement référence au SHA1 de certains commit.
git tag v1.0 <sha1>
réponse de CharlesB et réponse de helmbert sont utiles, mais il m'a fallu un certain temps pour les comprendre. Voici une autre façon de le dire:
git show <tag>
voir les détails d’une balise ne contient aucune référence à aucune branche, seul l’ID du commit sur lequel la balise pointe. 6f6b5997506d48fc6267b0b60c3f0261b6afe7a2
)git tag v0.1.0 # tags HEAD of *current* branch
git tag v0.1.0 develop # tags HEAD of 'develop' branch
git describe
pour décrire la branche actuelle: git describe [--tags]
décrit la branche actuelle en termes de commits depuis la dernière balise [éventuellement légère] dans l'historique de cette branche.git describe
_ NE PEUT PAS refléter la dernière balise créée global.Les balises et les branches ne sont absolument pas liées, car les balises font référence à un commit spécifique et que branch est une référence mobile au dernier commit d'un historique. Les branches vont, les étiquettes restent.
Ainsi, lorsque vous marquez un commit, git se soucie peu de savoir quelle validation ou branche est extraite, si vous lui fournissez le SHA1 de ce que vous voulez taguer.
Je peux même taguer en me référant à une branche (elle étiquetera ensuite le bout de la branche), puis dire que le sommet de la branche est ailleurs (avec git reset --hard
par exemple), ou supprimez la branche. Le tag que j'ai créé ne bougera cependant pas.
Lorsque vous appelez simplement git tag <TAGNAME>
sans paramètres supplémentaires, Git créera une nouvelle étiquette à partir de votre HEAD actuel (c'est-à-dire le HEAD de votre branche actuelle).) cette branche, la branche HEAD suivra ces nouveaux commits, alors que la balise fait toujours référence au même commet.
Lorsque vous appelez git tag <TAGNAME> <COMMIT>
vous pouvez même spécifier le commit à utiliser pour créer la balise.
Quoi qu'il en soit, une balise est toujours simplement un "pointeur" sur un certain commit (pas une branche).
Nous pouvons créer un tag pour un commit passé:
git tag [tag_name] [reference_of_commit]
par exemple:
git tag v1.0 5fcdb03