在 Git 中,提交是不可变的,并通过其哈希值进行标识。如果您获取现有提交并对其进行修改,例如通过更改提交消息、数据、作者、提交者或父级,那么这将创建具有不同哈希的新提交。
这是因为使用了加密哈希函数,并且更改输入总是会更改输出。使用默认哈希算法 ShA-1,理论上可以使用相同的哈希创建两个不同的提交,但这需要价值约 45,000 美元的云计算资源,并且大多数版本的 Git 都会检测到这种篡改并拒绝在该提交上进行操作。存储库。对于新的 SHA-256,目前认为不可能产生冲突。
所以答案是,实际上,更改提交的输入会更改哈希值,但是使用 SHA-1,如果您花费大量资源,理论上可以创建具有相同哈希值的两个提交。