【學了就忘】Git原理 — 57.詳解.git目錄(一)

1、.git目錄介紹

我們先在本地電腦中創建一個Git本地版本庫。

  1. 在自己指定的目錄中新建一個文件夾。
  2. 進入該文件夾,右鍵啓動Git Bash
  3. 輸入git init 命令來初始化一個Git本地版本庫。

如下:


我們可以看到,一個剛剛初始化好的Git本地版本庫中,只有一個.git目錄,此刻這也叫做Git的裸倉庫。

說明:

  • 當在一個新目錄或已有目錄執行 git init 時,Git 會創建一個 .git 目錄。 這個目錄包含了幾乎所有 Git 存儲和操作的東西。
  • .git 目錄中的這些文件是 Git 倉庫的骨幹,也是Git的最核心的東西。
  • 如若想備份或複製一個版本庫,只需把這個目錄拷貝至另一處即可。

.git目錄初始內容如下

L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/git_learning (master)
total 7
-rw-r--r-- 1 L 197121 130  4月 21 22:38 config
-rw-r--r-- 1 L 197121  73  4月 21 22:38 description
-rw-r--r-- 1 L 197121  23  4月 21 22:38 HEAD
drwxr-xr-x 1 L 197121   0  4月 21 22:38 hooks/
drwxr-xr-x 1 L 197121   0  4月 21 22:38 info/
drwxr-xr-x 1 L 197121   0  4月 21 22:38 objects/
drwxr-xr-x 1 L 197121   0  4月 21 22:38 refs/

今天我們到.git目錄中去看一看。

2、hooks目錄 (鉤子)

(1)hooks目錄介紹

和其它版本控制系統一樣,Git 能在特定的重要動作發生時,觸發自定義腳本(鉤子腳本)。

鉤子分爲:客戶端的鉤子和服務器端的鉤子。客戶端鉤子由提交和合並這樣的操作所調用,而服務器端鉤子作用於接收被推送的提交這樣的聯網操作。

鉤子都被存儲在.git目錄下的 hooks 子目錄中。 如下圖:

當你用 git init 命令初始化一個新版本庫時,Git 默認會在這個目錄中放置一些示例腳本。這些腳本都是 shell 腳本,其中一些還混雜了 Perl 代碼。你可以使用任何你熟悉的語言編寫Git鉤子腳本,如Ruby 或 Python等編寫的可執行腳本,都可以正常使用。

將編寫好的可執行腳本(不帶擴展名),放入 .git 目錄下的 hooks 子目錄中,即可激活該鉤子腳本。

(2)鉤子腳本舉例說明

  1. pre-commit 鉤子:在創建提交信息前運行,它用於檢查即將提交的快照。例如,檢查是否有所遺漏,確保測試運行,以及覈查代碼。

    如果該鉤子以非零值退出,Git 將放棄此次提交,不過你可以用 git commit --no-verify 來繞過這個環節。

    你可以利用該鉤子,來檢查代碼風格是否一致、尾隨空白字符是否存在,或新方法的文檔是否適當等操作。

  2. commit-msg 鉤子:接收一個參數,此參數存有當前提交信息的臨時文件的路徑。 如果該鉤子腳本以非零值退出,Git 將放棄提交,因此,可以用來在提交通過前驗證項目狀態或提交信息。

  3. post-commit 鉤子:在整個提交過程完成後運行。 它不接收任何參數,但你可以很容易地通過運行 git log -1 HEAD 來獲得最後一次的提交信息。 該鉤子一般用於通知之類的事情。

這裏只簡單介紹三個hooks目錄中的鉤子腳本,如果想查看更多鉤子示例腳本說明,可以查看https://git-scm.com/book/zh/v2/%E8%87%AA%E5%AE%9A%E4%B9%89-Git-Git-%E9%92%A9%E5%AD%90#_git_hooks

3、info目錄

info 目錄包含一個全局性排除(global exclude)文件, 用以放置那些不希望被記錄在 .gitignore 文件中的忽略模式(ignored patterns)

(具體用法,可以看前面Git忽略相關的文章)

4、description文件

description文件:倉庫的描述信息。

description文件內容如下:

$ cat description
Unnamed repository; edit this file 'description' to name the repository.

翻譯:未命名的存儲庫; 編輯此文件“description”,以命名存儲庫。

說明:該文件僅供 GitWeb (Github 的一種前身) 程序使用,我們無需關心。

5、config文件

config 文件包含項目特有的配置選項。

Git配置分爲三個級別:

  1. 系統級別:system。
  2. 全局級別(用戶級別):global。
  3. 本地級別:local。

本地級別的配置信息,就記錄在config 文件中,使用git config --localgit config 不加任何參數命令進行配置。

(具體應用,可以看前面Git配置簽名相關的文章)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章