为什么我没有得到相同的SHA-1?

我尝试了以下两个命令:

philip@X230:~/Desktop/learn_git$ echo 'what is up, doc?' | git hash-object --stdin
7108f7ecb345ee9d0084193f147cdad4d2998293

philip@X230:~/Desktop/learn_git$ echo 'blob 16u0000what is up, doc?' | openssl sha1
(stdin)= 5bc40a1cd865de7a0a4641d3d059b1216ed9042c

我想知道为什么我没有得到相同的 SHA-1

回答

两件事情:

  1. echo 'what is up, doc?'输出17 个字符,包括末尾的换行符。您应该echo -n两次使用(假设为 bash)来删除末尾的换行符,或者将手动构建的 blob 的长度调整为 17。

  2. 你的u0000逃逸是无效的(测试它,echo 'blob 16u0000what is up, doc?'在没有管道进入 sha1 的情况下运行到控制台)。您需要-e选项(再次假设 bash)来使 echo 解释任何转义。

如果你这样做

echo -e 'blob 17u0000what is up, doc?' | openssl sha1

结果是

(stdin)= 7108f7ecb345ee9d0084193f147cdad4d2998293

git hash-object很好匹配。


以上是为什么我没有得到相同的SHA-1?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>