题
我已经添加文件到与“索引”:
git add myfile.java
我如何找到这个文件的SHA1?
解决方案
您想-s
选项git ls-files
。这给你在索引中的文件的模式和SHA1哈希。
git ls-files -s myfile.java
请注意,你不希望git hash-object
,因为这让你在工作树中的文件的SHA1 ID,因为它目前是不是你已经添加到索引的文件。一旦你的git add
后更改工作树副本这将是不同的。
其他提示
这是一个老问题,但有一点需要澄清:
这个问题,下面说说 Git的散列一个文件,该文件是不完全一样, <“这个文件的SHA1” /的答案EM>如问的问题。
在短:
如果你想获得的的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大小\ 0CONTENT” 强>其中的“斑点” 强>实际上是一种字符串 “斑点”(它后跟一个空格),<强>尺寸强>是以字节为单位的文件大小(一个ASCII十进制),的 “\ 0”强>是一个空字符和内容是实际的文件的内容)。
如果您希望得到公正的“这个文件的SHA1” 正如字面上问这样的问题:
sha1sum < $file
如果您没有sha1sum
可以使用shasum -a1
或openssl dgst -sha1
(具有略微不同的输出格式)。
$ git hash-object myfile.java
802992c4220de19a90767f3000a79a31b98d0df7
不隶属于 StackOverflow