版本庫指的是.git目錄,介紹版本庫下各個文件和文件夾的作用。
1、文件
1.1 index
暫存區文件,存儲一次提交到當前時間的變更集(當前時間還未提交)。
1.2 config
保存版本庫的配置信息,它的作用域有三種,
system:作用域爲系統變量,適用於電腦上的任何用戶創建的任意版本庫
global:作用域爲當前用戶創建的任意版本庫。
local:作用域爲當前版本庫。
常見的配置信息有個人信息,例如user.name, user.email,分支關聯信息,例如:
[branch "xx"] remote = origin merge = refs/heads/xx
可以通過git config指令,修改各個作用域的配置文件。分爲兩類,配置文件內容的操作,某個配置項的操作。
1.2.1 配置項
格式:
git config <file-option> --type=<type> --add key value
選項:
file-option:文件的選項。例如作用域global, system, local
type:數據的類型,默認類型爲key-value,還有布爾,int,patch等其他類型,實際使用場景較少,略。
add key value:具體的某個命令,這裏以添加爲例。其中add可以省略,默認爲添加鍵值對。
示例:
git config –-global user.name xx
配置項的增刪改查。
新增: git config --scope –-add key value
查詢:git config --scope --option –-list, option略。
刪除:git config --scope –-unset key。
批量刪除:git config --scope --unset-all key。
1.2.2 配置文件
格式:
git config <file-option> command
選項:
file-option:文件的選項,與操作配置項的指令含義相同。
command:具體的指令。
文件操作:
編輯:git config –global -e
文件內容:針對的都是存量內容。
新增: git相關操作會自動同步到config文件中。
查看:git config [–-get || --get-all] section.xx,例如core.bare,get-all獲取當前key對應的所有value。
正則表達式查看:git config –scope –get-regexp 表達式, 例如git config –scope –get-regexp core.*,查看section core下面的所有變量。
刪除:git config --scope –remove-section name,section通常由【】包裹。
重命名:git config --scope –rename-section old_name new_name
1.3 description
版本庫的描述,它用於描述版本庫的用途。類似於Java在創建包時,創建的package-info.java。
1.4 head
保存Head當前指向的Commit對象。它包含兩個信息,第一個信息是分支名稱,第二個信息是Commit對象的信息。
2、文件夾
2.1 objects
它用於存放核心對象,blob,commit,tree,每種類型的對象都一一對應SHA1值,並以它的前兩位作爲目錄名稱,後126位作爲文件的名稱。
打開目錄,通過人是無法識別出對象的類型,而且也無法查看文件的內容,都是二進制文件。
切記勿修改,移動,刪除其中的內容。
2.2 refs
存放引用,通常分爲三類,
本地的分支:存儲分支信息。
遠程的分支:目錄名稱爲遠程版本庫的名稱,子目錄與本地分支沒有區別。
tags:存儲tag對象。
2.3 logs
存放Git的日誌,大部分是引用日誌,即HEAD相關的日誌。
可以通過git reflog, git log命令查看日誌的內容
2.4 info
存儲其他信息,在該目錄下最常見的文件爲exclude,指定排除哪些文件。
2.5 hooks
它存放hook腳本,功能類似於事件監聽,在git指令之前或之後執行特定的shell腳本,hooks目錄下存放的是示例腳本,可以直接刪除。