私はファイルを「インデックス」に追加しました:
git add myfile.Java
このファイルのSHA1を見つけるにはどうすればよいですか?
-s
オプションをgit ls-files
にしたい。これにより、インデックス内のファイルのモードとsha1ハッシュが得られます。
git ls-files -s myfile.Java
git hash-object
は必要ないことに注意してください。これにより、作業ツリー内のファイルのsha1 IDが現在の状態のままであり、インデックスに追加したファイルのIDではありません。 git add
の後に作業ツリーのコピーを変更すると、これらは異なります。
これは古い質問ですが、1つ明確化が必要です。
この質問と以下の回答は、ファイルの Gitハッシュと完全に同じではないについて述べています。質問で尋ねられた「このファイルのSHA1」。
要するに:
インデックス内のファイルの Gitハッシュを取得したい場合-参照 Charles Baileyによる回答 :
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合計ではなく、文字列 "blob SIZE\0CONTENT" のsha1合計です "blob" は文字列 "blob"(スペースが後に続く)、 [〜#〜] size [〜#〜] はファイルですバイト単位のサイズ(ASCII 10進数)、 "\ 0" はnull文字、 [〜#〜] content [〜#〜] は実際のファイルのコンテンツです)。
質問で文字通り尋ねられたように、 "このファイルのSHA1" だけを取得したい場合:
sha1sum < $file
ない場合sha1sum
を使用できますshasum -a1
またはopenssl dgst -sha1
(出力形式が少し異なります)。
$ git hash-object myfile.Java
802992c4220de19a90767f3000a79a31b98d0df7