Git哈希对象在Powershell,CMD和Bash中产生不同的SHA1?

Dil*_*ali 2 git bash powershell hash sha1

我认为无论平台如何,SHA1值都是相同的.我今天遇到了这个,希望我能在这里得到一些澄清.

我的测试字符串是: 'Apple Pie'

在Bash:

echo 'Apple Pie' | git hash-object --stdin
23991897e13e47ed0adb91a0082c31c82fe0cbe5
Run Code Online (Sandbox Code Playgroud)

在CMD(Windows 10)中:

echo 'Apple Pie' | git hash-object --stdin
f554ff1fdde0e3c2ca9f67849791456302b5c12b
Run Code Online (Sandbox Code Playgroud)

在Powershell 5.0(Windows 10)中:

echo 'Apple Pie' | git hash-object --stdin
157cb7be4778a9cfad23b6fb514e364522167053
Run Code Online (Sandbox Code Playgroud)

我现在很困惑git如何在这里工作,因为文件内容的sha1键在不同的环境中是非常不同的,我不确定如果我将一个项目克隆到我的在Powershell中构建的linux机器中它是否会起作用?这种行为一般是在git或SHA1中预期的吗?

tor*_*rek 6

毫无疑问,这三个值都是正确的.你看到的是echo三个命令解释器中的命令不一样!

$ printf 'Apple Pie\n' | git hash-object --stdin
23991897e13e47ed0adb91a0082c31c82fe0cbe5
$ printf 'Apple Pie\r\n' | git hash-object --stdin
157cb7be4778a9cfad23b6fb514e364522167053
Run Code Online (Sandbox Code Playgroud)

编辑:Windows 10 CMD可以通过以下方式在bash中模拟(以获得相同的哈希):

$ printf "'Apple Pie' \r\n" | git hash-object --stdin
f554ff1fdde0e3c2ca9f67849791456302b5c12b
Run Code Online (Sandbox Code Playgroud)

感谢其他人在这里提示.