Git でコミット オブジェクトのインデックスを作成しますか?

Git でコミット オブジェクトのインデックスを作成しますか?

コミット オブジェクトの作成時に作成される SHA は、ファイルの内容のみの SHA なのか、それともコミットの作成者、タイムスタンプ、日付など、HASH 関数への他の入力もあるのでしょうか。

私の心の中には次のような混乱があります

commit object's index=SHA(Contents of file)?
             OR
commit object's index=SHA(Contents of file+author of commit+date of the day+time of the day)?

答え1

コミットはgit純粋なファイルコンテンツとしては決して存在しないので、最初の仮定(SHA(ファイルの内容))は決して正しくありません。実際には、ファイルチェックインするとオブジェクトとして保存され、これオブジェクトの名前はファイルの SHA サムです。

しかし、ファイルをチェックインするだけではありません。ファイルに関することです階層ファイル階層は、ツリーオブジェクトには、この (サブ) 階層内のすべてのファイル (オブジェクト名 - SHA サムで示される)、ファイルの名前と権限が含まれます。ツリー ファイルのオブジェクト名は、このリストの SHA サムです。これは再帰的にも機能します。つまり、ツリー オブジェクトからツリー オブジェクトを参照できます (これがサブディレクトリの動作方法です)。

あなたの実際の専念親コミット(0個以上)のSHA合計、リポジトリのルートディレクトリに似たツリーオブジェクトの名前、コミット日、コミット作成者、コミットメッセージなどで構成されます。コミット名(「リビジョン番号」)は、これリスト。

関連情報