
請指導我,在建立提交物件時創建的 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 總和、類似儲存庫根目錄的樹物件名稱、提交日期、提交作者、提交訊息等組成。這清單。