在 Git 中,可以在不更改 SHA 的情况下更改作者、日期等内容吗?

use*_*535 0 git

在 Git 中,如果更改提交作者、评论、日期或父项,它是否总是会更改提交 SHA?

bk2*_*204 5

在 Git 中,提交是不可变的,并通过其哈希值进行标识。如果您获取现有提交并对其进行修改,例如通过更改提交消息、数据、作者、提交者或父级,那么这将创建具有不同哈希的新提交。

这是因为使用了加密哈希函数,并且更改输入总是会更改输出。使用默认哈希算法 ShA-1,理论上可以使用相同的哈希创建两个不同的提交,但这需要价值约 45,000 美元的云计算资源,并且大多数版本的 Git 都会检测到这种篡改并拒绝在该提交上进行操作。存储库。对于新的 SHA-256,目前认为不可能产生冲突。

所以答案是,实际上,更改提交的输入会更改哈希值,但是使用 SHA-1,如果您花费大量资源,理论上可以创建具有相同哈希值的两个提交。