提交物件
commit
可能是 git
使用者最熟悉的 object
型別,因為它是用於使用 git commit
命令建立的。
但是,commit
不直接包含任何已更改的檔案或資料。相反,它主要包含後設資料和指向其他 objects
的指標,其中包含 commit
的實際內容。
一個 commit
包含一些東西:
- tihuan 的雜湊
- 父母
commit
的雜湊 - 作者姓名/電子郵件,委員姓名/電子郵件
- 提交訊息
你可以看到任何提交的內容,如下所示:
$ git cat-file commit 5bac93
tree 04d1daef...
parent b7850ef5...
author Geddy Lee <glee@rush.com>
commiter Neil Peart <npeart@rush.com>
First commit!
樹
一個非常重要的注意事項是 tree
物件儲存專案中的每個檔案,並且它儲存的所有檔案都不是差異。這意味著每個 commit
都包含整個專案*的快照。
* 從技術上講,只儲存已更改的檔案。但這更像是效率的實施細節。從設計角度來看,commit
應被視為包含專案的完整副本。
親
parent
行包含另一個 commit
物件的雜湊,可以被認為是指向先前提交的父指標。這隱式地形成了一個稱為提交圖的提交圖。具體來說,它是一個有向無環圖 (或 DAG)。