Git
English ▾ 主題 ▾ 最新版本 ▾ git-init 最後更新於 2.47.0

名稱

git-init - 建立一個空的 Git 儲存庫或重新初始化一個現有的儲存庫

概要

git init [-q | --quiet] [--bare] [--template=<template-directory>]
	  [--separate-git-dir <git-dir>] [--object-format=<format>]
	  [--ref-format=<format>]
	  [-b <branch-name> | --initial-branch=<branch-name>]
	  [--shared[=<permissions>]] [<directory>]

描述

此命令會建立一個空的 Git 儲存庫 - 基本上是一個包含 objectsrefs/headsrefs/tags 子目錄和範本檔案的 .git 目錄。 將會建立一個不含任何提交的初始分支 (其名稱請參閱下方的 --initial-branch 選項)。

如果設定了 $GIT_DIR 環境變數,則它會指定一個路徑,以取代 ./.git 作為儲存庫的基礎。

如果透過 $GIT_OBJECT_DIRECTORY 環境變數指定物件儲存目錄,則 sha1 目錄會在底下建立;否則,會使用預設的 $GIT_DIR/objects 目錄。

在現有的儲存庫中執行 git init 是安全的。它不會覆寫已存在的內容。 重新執行 git init 的主要原因是為了取得新加入的範本 (或在給定 --separate-git-dir 的情況下將儲存庫移動到另一個位置)。

選項

-q
--quiet

僅列印錯誤和警告訊息;所有其他輸出都會被抑制。

--bare

建立一個裸儲存庫。如果未設定 GIT_DIR 環境變數,則會將其設定為目前的工作目錄。

--object-format=<格式>

為儲存庫指定指定的物件<格式>(雜湊演算法)。有效值為 sha1 和 (如果已啟用) sha256sha1 是預設值。

注意:目前,SHA-256 儲存庫和 SHA-1 儲存庫之間沒有互通性。

過去,我們曾警告說,當我們引入此類互通性功能時,SHA-256 儲存庫可能稍後需要向後不相容的變更。如今,我們只預期相容的變更。此外,如果事實證明有必要進行此類變更,則可以使用未來版本的 Git 使用以今天版本的 Git 建立的 SHA-256 儲存庫,而不會遺失資料。

--ref-format=<格式>

為儲存庫指定指定的參考儲存<格式>。有效值為

  • 使用 packed-refs 的鬆散檔案的 files。這是預設值。

  • 適用於 reftable 格式的 reftable。此格式為實驗性,其內部結構可能會變更。

--template=<範本目錄>

指定將使用範本的目錄。(請參閱下方的「範本目錄」章節。)

--separate-git-dir=<git-dir>

不要將儲存庫初始化為 $GIT_DIR./.git/ 的目錄,而是在該處建立一個文字檔案,其中包含指向實際儲存庫的路徑。此檔案作為與檔案系統無關的 Git 符號連結指向儲存庫。

如果這是重新初始化,則會將儲存庫移動到指定的路徑。

-b <分支名稱>
--initial-branch=<分支名稱>

<分支名稱> 用於新建立的儲存庫中的初始分支。如果未指定,則回復為預設名稱 (目前為 master,但未來可能會變更;可以使用 init.defaultBranch 組態變數自訂名稱)。

--shared[=(false|true|umask|group|all|world|everybody|<權限>)]

指定 Git 儲存庫要在多個使用者之間共用。這允許屬於同一群組的使用者推送至該儲存庫。指定時,會設定組態變數 core.sharedRepository,以便使用要求的權限建立 $GIT_DIR 下的檔案和目錄。如果未指定,Git 會使用 umask(2) 回報的權限。

此選項可有下列值,如果未給定值,則預設為 group

umask
false

使用 umask(2) 回報的權限。當未指定 --shared 時,這是預設值。

group
true

使儲存庫成為群組可寫入的 (以及 g+sx,因為 git 群組可能不是所有使用者的主要群組)。這用於放寬原本安全的 umask(2) 值。請注意,umask 仍適用於其他權限位元 (例如,如果 umask 是 0022,則使用 group 不會從其他 (非群組) 使用者中移除讀取權限)。請參閱 0xxx,了解如何精確地指定儲存庫權限。

all
world
everybody

group 相同,但使所有使用者都能讀取儲存庫。

<權限>

<權限> 是以 0 為字首的 3 位數八進位數字,且每個檔案都將具有 <權限> 模式。<權限> 將會覆寫使用者的 umask(2) 值 (而不僅像 groupall 一樣放寬權限)。0640 將建立一個群組可讀取的儲存庫,但群組不可寫入或無法讓其他人存取。0660 將建立一個目前使用者和群組可讀寫的儲存庫,但其他人無法存取 (目錄和可執行檔會從對應的使用者類別的 r 位元取得其 x 位元)。

依預設,會在共用儲存庫中啟用組態旗標 receive.denyNonFastForwards,因此您無法強制非快速轉送的推送到其中。

如果您提供 <目錄>,則命令會在其中執行。如果此目錄不存在,則會建立該目錄。

範本目錄

名稱不是以點開頭的範本目錄中的檔案和目錄將會在建立後複製到 $GIT_DIR

範本目錄將會是下列其中之一 (依序)

  • 使用 --template 選項給定的引數;

  • $GIT_TEMPLATE_DIR 環境變數的內容;

  • init.templateDir 組態變數;或

  • 預設範本目錄:/usr/share/git-core/templates

預設範本目錄包含一些目錄結構、建議的「排除模式」 (請參閱 gitignore[5]) 和範例 hook 檔案。

預設情況下,所有範例鉤子都是停用的。要啟用其中一個範例鉤子,請將其 .sample 後綴移除,以重新命名它。

關於鉤子執行的更多一般資訊,請參閱 githooks[5]

範例

為現有程式碼庫啟動新的 Git 儲存庫
$ cd /path/to/my/codebase
$ git init      (1)
$ git add .     (2)
$ git commit    (3)
  1. 建立 /path/to/my/codebase/.git 目錄。

  2. 將所有現有檔案加入索引。

  3. 將初始狀態記錄為歷史記錄中的第一個提交。

組態設定

本節中此行以下的所有內容,都是從 git-config[1] 文件中有選擇地包含進來的。其內容與在那裡找到的相同。

init.templateDir

指定將從中複製範本的目錄。

init.defaultBranch

允許覆寫預設分支名稱,例如在初始化新儲存庫時。

init.defaultObjectFormat

允許覆寫新儲存庫的預設物件格式。請參閱 git-init[1] 中的 --object-format=。命令列選項和 GIT_DEFAULT_HASH 環境變數的優先順序都高於此設定。

init.defaultRefFormat

允許覆寫新儲存庫的預設參考儲存格式。請參閱 git-init[1] 中的 --ref-format=。命令列選項和 GIT_DEFAULT_REF_FORMAT 環境變數的優先順序都高於此設定。

GIT

屬於 git[1] 套件的一部分

scroll-to-top