2011-12-18 21 views
4

私は何かが足りないと思う。私はgitのSHA-1ハッシュコミット識別子の使用が、そのコミットのために他の誰かから得たパッチが変更されていないことを確信できるという印象を受けました。git-applyかgit-amは同じハッシュを出力しますか?

は(名前と電子メールは明らかに、変更された)私は私のマシン上でやったこのテストを取る:

cd dogcatcher 
dogcatcher> git log 
commit 926f347567a9da6f7692aca0e23d13f094d9e3a6 
Author: Joe User <[email protected]> 
Date: Sat Dec 17 15:28:55 2011 -0600 

    3rd branch commit 

commit 11e8055aa5e8f0d323c48b4f691adced7a8a9762 
Author: Joe User <[email protected]> 
Date: Sat Dec 17 15:10:44 2011 -0600 

    second branch commit 

commit 23deb7093a8565479092ef84142a0e2e7282d213 
Author: Joe User <[email protected]> 

dogcatcher> git format-patch 23de (format a patch containing everything since 23de) 

dogcatcher> cd .. 
~> cp -r dogcatcher catcatcher 
cd catcatcher 

catcatcher> git reset --hard 23de (reset HEAD to 23de) 
catcatcher> git am 00* (apply the two patch files) 
catcatcher> git log 

commit 2548980811d1875971ce1a018df98374950e0059 
Author: Joe User <[email protected]> 
Date: Sat Dec 17 15:28:55 2011 -0600 

    3rd branch commit 

commit 7d651d05344ba6e2cd18d8e24c0c350d0c7dec66 
Author: Joe User <[email protected]> 
Date: Sat Dec 17 15:10:44 2011 -0600 

    second branch commit 

commit 23deb7093a8565479092ef84142a0e2e7282d213 
Author: Joe User <[email protected]> 

あなたが見ることができるように、ハッシュはパッチによって作成された最後の二つのコミット、上異なっています。さて、おそらくそれは理にかなっています。確かに、パッチによって作成されたファイルのタイムスタンプは異なっていました。 (私は、どのような情報がハッシュに含まれているのか分かりません)

しかし、もしそうならば、ちょうど私が適用したパッチがまったく同じコードを含んでいることをどのように確認できますか?パッチファイルを送った人が悪意のある変更を加えていないことをどのように知っていますか?

他のハッシュの原因となったミスを犯したのですが、それを正しく行っても、同じハッシュが出てきたのでしょうか?

答えて

7

デフォルトでは、git amは、コミッター日付を現在の時刻に設定します。 --committer-date-is-author-dateフラグを使用すると、それを避けることができますが、依然としてコミッターとしてあなたを設定することができます(実際はおそらくそうでしょう)。代わりにgit log --format=fullerを使用してこれを確認できます。コミッター情報も表示されます。

+0

git amにそのフラグを追加しようとしました。無効。ハッシュはまだ異なります。私は両方の状況でコミッターでもあるので、そうではありません。 – wadesworld

+2

@wadesworld: 'git log --format = raw'の出力を見てください。これは未処理のコミットオブジェクトを示しています。次に、それらを比較して、異なるもの(著者情報、コミッター情報、ツリーのハッシュ、またはメッセージのいずれであっても)を見ることができます。 –

+0

OK、私はこのテストを実行した最初の数回何がうんざりしたのか分かりませんが、私は私のオリジナルのテストレポを削除して、もう一度試してみました。ありがとう! – wadesworld

関連する問題