Вам нужна опция -s для git ls-files. Это дает вам режим и sha1 хэш файла в индексе.
git ls-files -s myfile.java
Обратите внимание, что вы не хотите git hash-object, так как это дает вам идентификатор sha1 файла в рабочем дереве, как он есть сейчас, а не файла, который вы добавили в индекс. Они будут отличаться после внесения изменений в копию рабочего дерева после git add.
Ответ 2
Это старый вопрос, но нужно кое-что уточнить:
В этом вопросе и ответах ниже рассказывается о хэш Git файла не точно такого же, как "SHA1 этого файла", как задано в вопрос.
(Выше показано, как фактически вычисляется хэш Git - это не сумма sha1 файла, а sha1 сумма строки "blob SIZE\0CONTENT" , где "blob" буквально является строкой "blob" (за ней следует пробел), SIZE - это размер файла в байтах (десятичный знак ASCII), "\0" - это нулевой символ, а CONTENT - это фактическое содержимое файла).
Если вы хотите получить только "SHA1 этого файла" , как было буквально задано в вопросе:
sha1sum < $file
Если у вас нет sha1sum, вы можете использовать shasum -a1 или openssl dgst -sha1 (с немного другим форматом вывода).