tag remove que oneline log crear git sha1

remove - Git: encontrar el SHA1 de un archivo individual en el índice



git tag (3)

He agregado un archivo al ''índice'' con:

git add myfile.java

¿Cómo averiguo el SHA1 de este archivo?


Desea la opción -s de git ls-files . Esto le proporciona el modo y el hash sha1 del archivo en el índice.

git ls-files -s myfile.java

Tenga en cuenta que no desea git hash-object ya que esto le proporciona el sha1 id del archivo en el árbol de trabajo tal como está actualmente, no del archivo que ha agregado al índice. Estos serán diferentes una vez que realice cambios en la copia del árbol de trabajo después de git add .


$ git hash-object myfile.java 802992c4220de19a90767f3000a79a31b98d0df7


Es una vieja pregunta, pero una cosa necesita alguna aclaración:

Esta pregunta y las respuestas a continuación hablan sobre el hash Git de un archivo que no es exactamente lo mismo que "SHA1 de este archivo" como se pregunta en la pregunta.

En breve:

Si desea obtener el hash Git del archivo en el índice , consulte la respuesta de Charles Bailey :

git ls-files -s $file

Si desea obtener el hash Git de cualquier archivo en su sistema de archivos , consulte la respuesta por cnu :

git hash-object $file

Si desea obtener el hash Git de cualquier archivo en su sistema de archivos y no tiene instalado Git :

(echo -ne "blob `wc -c < $file`/0"; cat $file) | sha1sum

(Lo anterior muestra cómo se calcula realmente el hash Git: no es la suma sha1 del archivo, sino una suma sha1 de la cadena "blob SIZE / 0CONTENT" donde "blob" es literalmente una cadena "blob" (seguida de un espacio), SIZE es el tamaño del archivo en bytes (un decimal ASCII), "/ 0" es el carácter nulo y CONTENT es el contenido real del archivo).

Si desea obtener solo "el SHA1 de este archivo" como se le preguntó literalmente en la pregunta:

sha1sum < $file

Si no tiene sha1sum , puede usar shasum -a1 o openssl dgst -sha1 (con un formato de salida ligeramente diferente).