Я добавил файл в индекс с помощью:
git add myfile.java
Как узнать SHA1 этого файла?
Я добавил файл в индекс с помощью:
git add myfile.java
Как узнать SHA1 этого файла?
Вам нужна опция -s
для git ls-files
. Это дает вам режим и sha1 хэш файла в индексе.
git ls-files -s myfile.java
Обратите внимание, что вы не хотите git hash-object
, так как это дает вам идентификатор sha1 файла в рабочем дереве, как он есть сейчас, а не файла, который вы добавили в индекс. Они будут отличаться после внесения изменений в копию рабочего дерева после git add
.
Это старый вопрос, но нужно кое-что уточнить:
В этом вопросе и ответах ниже рассказывается о хэш Git файла не точно такого же, как "SHA1 этого файла", как задано в вопрос.
Короче:
Если вы хотите получить хеш Git файла в индексе - см. ответ Чарльза Бейли:
git ls-files -s $file
Если вы хотите получить хеш Git любого файла в вашей файловой системе - см. ответ cnu:
git hash-object $file
Если вы хотите получить хеш Git любого файла в вашей файловой системе, и у вас нет Git установлен:
(echo -ne "blob `wc -c < $file`\0"; cat $file) | sha1sum
(Выше показано, как фактически вычисляется хэш Git - это не сумма sha1 файла, а sha1 сумма строки "blob SIZE\0CONTENT" , где "blob" буквально является строкой "blob" (за ней следует пробел), SIZE - это размер файла в байтах (десятичный знак ASCII), "\0" - это нулевой символ, а CONTENT - это фактическое содержимое файла).
Если вы хотите получить только "SHA1 этого файла" , как было буквально задано в вопросе:
sha1sum < $file
Если у вас нет sha1sum
, вы можете использовать shasum -a1
или openssl dgst -sha1
(с немного другим форматом вывода).
$ git hash-object myfile.java
802992c4220de19a90767f3000a79a31b98d0df7