Je n'arrive pas à trouver quelle étiquette est actuellement extraite.
Quand je fais:
git checkout tag1
git branch
Je n'arrive pas à savoir sur quelle étiquette je suis. Il ne se connecte que:
* (no branch)
master
Est-il possible de savoir quelles balises sont extraites? Dans l'exemple ci-dessus, il s'agirait de tag1
.
Edit: Jakub Narębski a plus de git-fu. La commande beaucoup plus simple suivante fonctionne parfaitement:
git describe --tags
(Ou sans le --tags
si vous avez extrait une balise annotée. Ma balise est légère, j'ai donc besoin des --tags.)
la réponse originale suit:
git describe --exact-match --tags $(git log -n1 --pretty='%h')
Quelqu'un avec plus de git-fu peut avoir une solution plus élégante ...
Ceci exploite le fait que git-log
rapporte le journal à partir de ce que vous avez extrait. %h
imprime le hachage abrégé. Ensuite, git describe --exact-match --tags
trouve la balise (légère ou annotée) qui correspond exactement à cette validation.
La syntaxe $()
ci-dessus suppose que vous utilisez bash ou similaire.
Cela a fonctionné pour moi git describe --tags --abbrev=0
Afficher toutes les balises sur le HEADactuel _ (ou valider)
git tag --points-at HEAD
git describe
est une commande en porcelaine , à éviter:
http://git-blame.blogspot.com/2013/06/checking-current-branch-programically.html
Au lieu de cela, j'ai utilisé:
git name-rev --tags --name-only $(git rev-parse HEAD)
Lorsque vous extrayez une étiquette, vous avez ce qu'on appelle un "tête détachée" . Normalement, le commit HEAD de Git est un pointeur sur la branche que vous avez extraite. Cependant, si vous extrayez autre chose qu'une branche locale (une étiquette ou une branche distante, par exemple), vous avez une "tête détachée" - vous ne vous trouvez pas vraiment dans une branche. Vous ne devez commettre aucun engagement lorsque vous êtes sur une tête détachée.
Vous pouvez extraire une balise si vous ne souhaitez apporter aucune modification. Si vous ne faites qu'examiner le contenu des fichiers ou si vous voulez construire votre projet à partir d'une balise, vous pouvez utiliser git checkout my_tag
et utiliser les fichiers , tant que vous ne commettez aucun commet . Si vous souhaitez commencer à modifier des fichiers, vous devez créer une branche basée sur la balise:
$ git checkout -b my_tag_branch my_tag
créera une nouvelle branche appelée my_tag_branch
à partir de my_tag
. Il est prudent de valider les modifications sur cette branche.
git log --decorate
Cela vous indiquera quelles références pointent vers le commit actuellement extrait.