2

尝试这个:

mkdir a  
cd a
git init
touch f1
git add f1
git commit -m "Commit 1"
git log

注意 SHA。然后做

git commit --amend -m "Commit 1"
git log

请注意,SHA 发生了变化,尽管我所看到的关于提交本身没有任何变化(甚至没有提交日期。)

这两个生成新 SHA 的提交有什么不同?

4

1 回答 1

4

我在本地浏览了您的示例。如果您使用git cat-file检查提交对象...

第一次提交后:

$ git cat-file -p f9afca7508e2d97ca4babfb897fa5acefe67af54
tree 56e3dd6f60494c9bbe56ea178b9a86c91d3139c6
author Lars Kellogg-Stedman <lars@example.com> 1376499716 -0400
committer Lars Kellogg-Stedman <lars@example.com> 1376499716 -0400

Commit 1

修改后:

$ git cat-file -p 976778e7f58c4b2f89b4f652e89c420e1266d297
tree 56e3dd6f60494c9bbe56ea178b9a86c91d3139c6
author Lars Kellogg-Stedman <lars@example.com> 1376499716 -0400
committer Lars Kellogg-Stedman <lars@example.com> 1376499733 -0400

Commit 1

请注意,这两个提交对于“提交者”元数据具有不同的时间戳。由于数据不同,commit ID 也不同。如果更改数据,则更改对象的 SHA1。

于 2013-08-14T17:04:55.723 回答