git維護兩個主要的數據結構:對象庫和索引。
對象庫包含原始的數據文件和所有的日誌消息、作者信息、日期,以及其他任意重建版本或分支的信息。
包含四種類型:塊(blob)、目錄樹(tree)、提交(commit)和標籤(tag)。
塊:文件的每個版本表示爲一個塊。
目錄樹:一個目錄樹對象代表一層目錄的信息。
提交:保存版本庫中每一次變化的元數據,包括作者、提交者、提交日期和日誌消息。
標籤:分配一個任意的名字給一個特定的提交對象。
索引:暫時的信息,並且在需要時可以進行修改。臨時的、動態的二進制文件,描述整個版本庫的目錄結構。
注:git對象庫被組織成一個內容尋址的存儲系統。其產生的全局唯一標識符是通過對內容進行散列計算出的。
git將所有文件分爲:以追蹤的(tracked)、忽略的(ignored)和未追蹤的(untracked)
git ls-files --stage命令查看隱藏在對象模型下的東西,並且可以找到暫存文件的SHA1值。
git commit --all命令暫存所有已知的和修改的文件,並提交它們。
如:在修改之前已經提交過相關文件,那在修改後此文件無論是否在索引中,使用git commit --all命令都會自動提交到版本庫中。
git rm命令從索引或同時從索引和工作目錄中刪除文件。
git rm --cached filename 命令只是從索引中刪除文件,並把它保留在工作目錄下。