web-dev-qa-db-fra.com

Montrer sur quel tag git vous êtes?

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.

185
grm

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.

276
bstpierre

Cela a fonctionné pour moi git describe --tags --abbrev=0

54
M K

Afficher toutes les balises sur le HEADactuel _ (ou valider)

git tag --points-at HEAD
33
George Pavelka

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)
22
Greg

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.

21
mipadi

git log --decorate

Cela vous indiquera quelles références pointent vers le commit actuellement extrait.

7
chriswatrous