簡體中文 ▾ 主題 ▾ 最新版本 ▾ git-init 最後更新於 2.48.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=<format>

為倉庫指定給定的物件 <format> (雜湊演算法)。有效值為 sha1 和(如果啟用)sha256sha1 是預設值。

注意:目前,SHA-256 倉庫與 SHA-1 倉庫之間不具備互操作性。

從歷史上看,我們曾警告說,當我們引入此類互操作性功能時,SHA-256 倉庫可能需要向後不相容的更改。如今,我們只期望相容的更改。此外,如果此類更改被證明是必要的,則可以預期使用當前 Git 版本建立的 SHA-256 倉庫將能夠被未來版本的 Git 使用,而不會丟失資料。

--ref-format=<format>

為倉庫指定給定的引用儲存 <format>。有效值為

  • files 表示帶有 packed-refs 的鬆散檔案。這是預設值。

  • reftable 表示 reftable 格式。此格式是實驗性的,其內部結構可能會更改。

--template=<template-directory>

指定將使用模板的目錄。(請參閱下面的“模板目錄”部分。)

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

不將倉庫初始化為 $GIT_DIR./.git/ 目錄,而是在那裡建立一個文字檔案,其中包含實際倉庫的路徑。此檔案充當一個獨立於檔案系統的 Git 符號連結到倉庫。

如果這是重新初始化,倉庫將被移動到指定的路徑。

-b <branch-name>
--initial-branch=<branch-name>

為新建立的倉庫中的初始分支使用 <branch-name>。如果未指定,則回退到預設名稱(當前為 master,但將來可能會更改;該名稱可以透過 init.defaultBranch 配置變數進行自定義)。

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

指定 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 相同,但使倉庫對所有使用者可讀。

<perm>

<perm> 是一個以 0 為字首的 3 位八進位制數,每個檔案將具有模式 <perm><perm> 將覆蓋使用者的 umask(2) 值(而不僅僅像 groupall 那樣放寬許可權)。0640 將建立一個組可讀但不可組寫入或對其他人不可訪問的倉庫。0660 將建立一個對當前使用者和組可讀寫但對其他人不可訪問的倉庫(目錄和可執行檔案從相應使用者類的 r 位獲取它們的 x 位)。

預設情況下,共享倉庫中啟用了配置標誌 receive.denyNonFastForwards,這樣您就不能強制執行非快進式推送。

如果您提供一個 <directory>,該命令將在其中執行。如果此目錄不存在,它將被建立。

模板目錄

模板目錄中名稱不以點開頭的的檔案和目錄將在 $GIT_DIR 建立後複製到其中。

模板目錄將是以下之一(按順序)

  • --template 選項一起給出的引數;

  • $GIT_TEMPLATE_DIR 環境變數的內容;

  • init.templateDir 配置變數;或者

  • 預設模板目錄:/usr/share/git-core/templates

預設模板目錄包含一些目錄結構、建議的“排除模式”(參見 gitignore[5])和示例鉤子檔案。

示例鉤子預設都是停用的。要啟用其中一個示例鉤子,請透過移除其 .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