git commit --amend - 未进行任何更改时更改提交哈希

git commit --amend - commit hash is changed when no changes are made

我希望更正我对此的理解,但我不确定为什么会这样。

使用 git 时,我知道如果我对文件进行更改然后提交它,我会得到一个新的哈希值,因为文件已更改。

我对git commit --amend的理解是我可以对最后一次提交进行更改。

现在我明白了,如果我更改提交消息,哈希值也会改变。

但是当我不做任何更改而只是保存并退出编辑器时(我可能改变了主意需要更改)为什么散列会发生变化? 我所有的文件和一切都是一样的,但我已经保存了。当我 git log 提交的时间没有改变时,它只是在日志中出现两次,同时出现相同的时间、相同的消息、相同的文件,除了不同的提交哈希。

如果没有做任何改动,为什么会发生变化??

Git 哈希值是使用许多项目计算的,包括作者 name/date、提交 name/date 提交消息、树和父 SHA 等。当您修改提交时,提交 名称和日期会更新。 (您通常看不到提交名称和日期,除非您将其他格式选项传递给 git log。)因为已经更新,提交哈希将在修改提交时更改。