Question Comment récupérer le hachage pour le commit actuel dans Git?


Je voudrais conserver (pour l'instant) la possibilité de lier les changesets Git aux workitems stockés dans TFS.

J'ai déjà écrit un outil (en utilisant un crochet de Git) dans lequel je peux injecter des identifiants de workitem dans le message d'un ensemble de modifications Git.

Cependant, je voudrais également stocker l'identifiant de la validation Git (le hachage) dans un champ de travail TFS personnalisé. De cette façon, je peux examiner un workitem dans TFS et voir ce que les changesets Git sont associés au workitem.

Comment puis-je récupérer facilement le hachage du commit actuel de Git?


1415
2018-06-04 08:42


origine


Réponses:


Pour transformer une référence d'objet étendue arbitraire en SHA-1, utilisez simplement git-rev-parse, par exemple

git rev-parse HEAD

ou

git rev-parse --verify HEAD

Sidenote: Si vous voulez tourner les références (branches et Mots clés) dans SHA-1, il y a git show-ref et git for-each-ref.


2068
2018-06-04 09:05



Si vous voulez seulement le hash raccourci:

git log --pretty=format:'%h' -n 1

En outre, l'utilisation de% H est une autre façon d'obtenir le hachage long.


324
2017-09-30 23:32



Un autre, en utilisant git log:

git log -1 --format="%H"

C'est très similaire à @outofculture bien qu'un peu plus court.


116
2017-11-21 18:48



Pour être complet, puisque personne ne l'a encore suggéré. .git/refs/heads/master est un fichier qui ne contient qu'une seule ligne: le hash de la dernière validation master. Donc, vous pouvez juste le lire à partir de là.

Ou, comme commande:

cat .git/refs/heads/master

Mettre à jour:

Notez que git prend maintenant en charge le stockage de certaines références dans le fichier pack-ref au lieu d'un fichier dans le dossier / refs / heads /. https://www.kernel.org/pub/software/scm/git/docs/git-pack-refs.html


61
2017-10-16 11:34



Pour obtenir le SHA complet:

$ git rev-parse HEAD
cbf1b9a1be984a9f61b79a05f23b19f66d533537

Pour obtenir la version raccourcie:

$ git rev-parse --short HEAD
cbf1b9a

58
2017-07-29 20:04



Il y a toujours git describe ainsi que. Par défaut, cela vous donne -

john@eleanor:/dev/shm/mpd/ncmpc/pkg (master)$ git describe 
release-0.19-11-g7a68a75

34
2017-08-26 10:43



Commettre le hachage

git show -s --format=%H

Hachure de commit abrégée

git show -s --format=%h

Cliquez sur ici pour plus git show exemples.


25
2018-03-27 19:33



Utilisation git rev-list --max-count=1 HEAD


24
2018-06-04 08:48



Si vous avez besoin de stocker le hachage dans une variable pendant un script, vous pouvez utiliser

last_commit=$(git rev-parse HEAD)

Ou, si vous voulez seulement les 10 premiers caractères (comme le fait github.com)

last_commit=$(git rev-parse HEAD | cut -c1-10) 

18
2017-07-15 16:04



La manière la plus succincte que je connaisse:

git show --pretty=%h 

Si vous voulez un nombre spécifique de chiffres du hachage, vous pouvez ajouter:

--abbrev=n

12
2018-02-07 06:43



Si vous voulez la façon super-hacky de le faire:

cat .git/`cat .git/HEAD | cut -d \  -f 2`

Fondamentalement, git stocke l'emplacement de HEAD dans .git / HEAD, sous la forme ref: {path from .git}. Cette commande lit cela, découpe le "ref:" et lit le fichier sur lequel il pointe.

Cela, bien sûr, échouera en mode tête détachée, car HEAD ne sera pas "ref: ...", mais le hachage lui-même - mais vous savez, je ne pense pas que vous attendez beaucoup d'intelligence dans votre bash un -liners. Si vous ne pensez pas que les points-virgules trichent, cependant ...

HASH="ref: HEAD"; while [[ $HASH == ref\:* ]]; do HASH="$(cat ".git/$(echo $HASH | cut -d \  -f 2)")"; done; echo $HASH

10
2017-10-14 19:15