3

私は 2 つの git ブランチb'を持っており、内容b"はまったく同じです。SHA-1私はコミットb'し、コミットする代わりに、mergeまたはその単一のコミットのオプションrebaseを適用cherry-pickします。-xb"

b"適用されていることを示す行があるための私のコミットメッセージですcherry-pick。これが私の2つのブランチの唯一の違いです。その結果、とSHA-1のは異なります。ただし、両方の分岐がある場合、変更はありません。b'b"diff

分岐を調べて判断するSHA-1のではなく、調べて分岐が同一であると結論付けるのは簡単です。diff

おそらく、計算中にコミットメッセージが含まれないようにする必要があるか、コミットメッセージを比較対照する必要があるため、git「一貫性」がないのはなぜでしょうか?gitSHA-1git diff

4

2 に答える 2

2

私は2つのgitブランチb 'とb "を持っており、まったく同じSHA-1とコンテンツを持っています。

b' と b" が同じ SHA を持っている場合、それらは同じコミットであり、b' と b" は同じヘッドを持っています。コミットにハッシュされるものを理解するには、次を試してください。

git cat-file commit HEAD

コミットオブジェクトの内容を提供します:

tree f8156a51641da281e48960d846857aebc3e784a2
parent 61822c28ea4f8580dda88f3b375aef4e3a4f979b
author Someone <someone@somewhere.com> 1348177711 +0100
committer Someone <someone@somewhere.com> 1348178095 +0100

message

この場合、ツリー ハッシュを使用してコンテンツが同じかどうかを判断できるのではないかと考えるかもしれません。一部の変更がブランチで既に実行されている場合、ツリーは異なりますが、コンテンツは正しい結果になるため、これは信頼できません。

差分にコミット メタデータが含まれていないのはなぜですか? もっともな理由の 1 つは、差分が常にコミットで実行されるとは限らないことです。インデックスなどの他の形式のコンテンツをコミットと比較する可能性があるため、コンテンツの比較に重点が置かれています。

于 2013-08-19T20:34:16.713 に答える