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 を生成するこれら 2 つのコミットの違いは何ですか?

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

これら 2 つのコミットは、「コミッター」メタデータのタイムスタンプが異なることに注意してください。データが異なるため、コミット ID が異なります。データを変更すると、オブジェクトの SHA1 が変更されます。

于 2013-08-14T17:04:55.723 に答える