我不想使用git hash对象函数来计算git SHA hash,也就是说我想使用shasum函数来计算它。
我知道在下面的例子中
body="tree 491e9405120eaaa57cce3938fd38508d85a5e08b
parent 8550f0f1a7e32fb1bb0933b0294c116a8dbe6dce
author user <me@example.com> 1390718030 +0000
committer user <me@example.com> 1390718030 +0000
This is a test"
echo $body | git hash-object -w --stdin #755481b921f13bcfd731d74287a0c5847519ee81
l=`expr ${#body} + 1`
echo -e 'blob $l\0$body' | shasum #755481b921f13bcfd731d74287a0c5847519ee81
哈希值是相同的。但是如果我在hash-object中使用-t commit选项,我会得到一个不同的哈希值。我如何使用shasum计算提交哈希值?
git hash-object -t commit --stdin <<< "$body" #b4c45adbbe35d3d3c73de48d039a8e3038f5ec54
1条答案
按热度按时间waxmsbnn1#
您更改了写入哈希的对象的类型。
从
git hash-object
开始您从默认blob转到提交。
实际编写的对象从对象类型开始,这是sha1必须计算的内容的一部分。
参见:
Git计算一个文件的SHA1(或者,用Git的术语来说,一个"blob"):
这改变了sha1所考虑的内容。
对于
-t commit
,您修改了前缀(它不再是'blob
'),由于内容不同,sha1也不同。您可以执行以下操作:
第一个单词是内容的类型
更多参考请参见How Git Works