当我两次提交相同的东西时,为什么我会得到两个不同的git SHA?

时间:2013-08-14 16:58:13

标签: git

试试这个:

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的这两个提交有什么不同?

1 个答案:

答案 0 :(得分: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

请注意,这两个提交对&#34; commiter&#34;有不同的时间戳。元数据。由于数据不同,因此提交ID不同。如果更改数据,则更改对象的SHA1。