J'ai ajouté un fichier à l'index avec:
git add myfile.Java
Comment connaître le SHA1 de ce fichier?
Vous voulez le -s
option à git ls-files
. Cela vous donne le mode et le hachage sha1 du fichier dans l'index.
git ls-files -s myfile.Java
Notez que vous ne voulez pas git hash-object
car cela vous donne l'identifiant sha1 du fichier dans l'arborescence de travail tel qu'il est actuellement, pas du fichier que vous avez ajouté à l'index. Celles-ci seront différentes une fois que vous aurez apporté des modifications à la copie de l'arborescence de travail après le git add
.
C'est une vieille question mais une chose doit être clarifiée:
Cette question et les réponses ci-dessous parlent de le hachage Git d'un fichier qui n'est pas exactement le même que "le SHA1 de ce fichier" comme posé dans la question.
En bref:
Si vous voulez obtenir le hash Git du fichier dans l'index - voir la réponse de Charles Bailey :
git ls-files -s $file
Si vous voulez obtenir le hachage Git de n'importe quel fichier sur votre système de fichiers - voir la réponse de cn :
git hash-object $file
Si vous voulez obtenir le hachage Git de n'importe quel fichier sur votre système de fichiers et que Git n'est pas installé :
(echo -ne "blob `wc -c < $file`\0"; cat $file) | sha1sum
(Ce qui précède montre comment le hachage Git est réellement calculé - ce n'est pas la somme sha1 du fichier mais une somme sha1 de la chaîne "blob SIZE\0CONTENT" où "blob" est littéralement une chaîne "blob" (elle est suivie d'un espace), [~ # ~] size [~ # ~] est la taille du fichier en octets (an ASCII decimal), "\ 0 " est le caractère nul et [~ # ~] content [~ # ~] est le contenu réel du fichier ).
Si vous voulez obtenir juste "le SHA1 de ce fichier" comme cela a été littéralement demandé dans la question:
sha1sum < $file
Si vous n'avez pas sha1sum
vous pouvez utiliser shasum -a1
ou openssl dgst -sha1
(avec un format de sortie légèrement différent).
$ git hash-object myfile.Java
802992c4220de19a90767f3000a79a31b98d0df7