在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-sum 表示)、檔案的名稱和權限。樹檔案的物件名稱是此清單的 SHA 總和。這也可以遞歸地工作,即您可以從樹物件引用樹物件(這就是子目錄的工作方式)。

您的實際犯罪由(0個或多個)父親提交的 SHA 總和、類似儲存庫根目錄的樹物件名稱、提交日期、提交作者、提交訊息等組成。清單。

相關內容