bare Git 倉庫是什麼?

image


背景

今天,坐我旁邊的同事問我一些關於伺服器上命令的問題。其中有一個用了特殊參數的 git init 的命令,我也不認識,遂去 Google…
image

bare Git 倉庫

定義

A bare Git repository is typically used as a Remote Repository that is sharing a repository among several different people.

什麼是 bare Git 倉庫呢?簡單來說,就是在 Git 伺服器上的那個遠程 Git 倉庫,客戶端可以對其進行 push、pull 等操作。
image

創建一個 bare Git 倉庫

git init --bare

以上命令會創建一個 bare git 倉庫。

bare git 倉庫 vs 普通 git 倉庫

bare git 倉庫與使用 git init 命令創建的普通 git 倉庫唯一區別就是:bare git 倉庫沒有工作目錄/工作樹,僅僅是包含著了裸倉庫數據。

下面我們新建兩個文件夾 bare-git-reponormal-git-repo,分別用 git init --baregit init 去初始化看下效果:
image

可以發現,git status 命令在 bare git 倉庫中根本無法使用。而且 bare git 倉庫是沒有 .git/ 文件夾的,所有配置文件是直接就存在文件夾的根路徑下面的。
image

克隆時創建 bare git 倉庫

git init --bare 命令類似,我們也可以在使用 git clone 時通過添加 --bare參數來創建一個 bare git 倉庫而不是普通的 git 倉庫。👇下面是一個使用 git clone --bare 命令通過克隆 gitignore 倉庫在本地創建 git bare 倉庫的實例。
image

bare git 倉庫的命名約定

從上面的截圖中,我們不難發現,這個自動創建的倉庫其文件夾名稱為 gitignore.git,嗯這也是 bare git 倉庫的標準命名方式。

結論:建議使用 xxxxxx.git 名字來命名 bare git 倉庫的文件夾