Git 初始化



git init 命令用於建立一個新的 Git 倉庫。在目錄中執行此命令會初始化一個新的空 Git 倉庫,方法是建立一個新的隱藏.git子目錄。

此命令建立了.git目錄,其中包含所有專案引用和物件。

  • 專案的歷史記錄基於.git目錄,該目錄還包含重要的配置檔案。

  • 要建立新倉庫,請選擇git init;要克隆現有倉庫,請使用git clone;不要同時選擇兩者。

  • 同時使用git initgit clone可能會導致衝突和不正確的倉庫設定。

當我們執行git init時,會建立一個空的 Git 倉庫。

倉庫中存在一個包含特定子目錄的.git目錄

  • objects : 包含 Git 處理的所有資訊(提交、樹和 Blob)。

  • refs/heads : 提供對倉庫分支末端的引用。

  • refs/tags : 儲存指向已新增到倉庫的標籤物件的指標。

  • 模板檔案 : 這些也包含在.git目錄中。

透過使用$GIT_DIR環境變數,可以為倉庫選擇不同的基本路徑,而不是標準的./.git

  • 如果設定了$GIT_OBJECT_DIRECTORY,Git 會將物件儲存在其中;否則,預設為$GIT_DIR/objects

  • 在已存在的倉庫中執行git init是無風險的,不會替換當前檔案。

  • 它通常與--separate-git-dir選項一起使用,以移動倉庫或配置新模板。

語法

要使用此命令,請在終端中導航到您的專案目錄並執行此命令。

  git init

初始化 Git 倉庫後,您通常會繼續使用諸如git add之類的命令來暫存您的檔案,並使用git commit來儲存您的更改。

選項

git init命令具有以下選項

-q

--quiet

  • Git 的-q--quiet選項隱藏輸出中的所有附加資訊,將其限制為錯誤和警告訊息,以實現更簡化的命令列介面。

  git init --quiet

  git init -q

--bare

  • 使用 Git 時,--bare選項建立一個沒有工作目錄的倉庫,這適用於伺服器設定,在這些設定中,更改會被拉取和推送,但不會直接編輯。

  • 如果未給出GIT_DIR,則倉庫將在當前目錄中建立。

  git init --bare sample-repo.git

--object-format=<format>

  • 在 Git 中,可以使用--object-format=<format>選項指定倉庫的雜湊演算法(物件格式)。

  • 在雜湊物件識別符號方面,Git 預設使用sha1

  • 如果啟用,可以選擇其他雜湊演算法sha256

  • 此選項會影響 Git 在整個倉庫中計算和管理物件識別符號的方式。

  • 可使用的格式為loosepack

    loose是預設格式,其中物件作為單獨的檔案儲存在.git/objects目錄中。

    pack是將物件儲存為打包格式,這在儲存方面更有效率。

  git init --object-format=pack

--ref-format=<format>

  • 在 Git 中,--ref-format=<format>選項定義倉庫引用的(refs)儲存格式。

  • 預設格式為files,其中 refs 作為鬆散的檔案與 packed-refs 一起儲存。

  • 另一個選項是reftable,它表示一種稱為reftable的實驗性格式。

    隨著 Git 的發展和改進,reftable格式可能會看到內部修改。

  git init --ref-format=loose

--template=<template-directory>

  • 在 Git 中,--template=<template-directory>選項指定初始化倉庫時將從中獲取模板的目錄。

  git init --template=/path/to/template sample-repo

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

  • Git 允許在不建立.git目錄的情況下初始化倉庫,方法是使用--separate-git-dir=<git-dir>選項。

  • 相反,它會生成一個指向給定位置(<git-dir>)的真實倉庫的文字檔案。

  • 此文字檔案充當符號連結,以支援跨多個檔案系統執行倉庫操作。

  git init --separate-git-dir=/path/to/git-dir /path/to/working-dir

在上面的示例中,/path/to/git-dir是將建立 .git 目錄的位置,而您的實際專案檔案將位於/path/to/working-dir

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

  • Git 透過指定倉庫應在多個使用者之間共享來允許組成員推送更改,方法是使用--shared選項。

  • 如果未提供值,則它會應用umask(2),或者根據指定的值設定$GIT_DIR下檔案和目錄的許可權。

  • 選項包括

    • umask : 當未給出許可權時,它使用umask(2)作為預設值。

    • group : 修改umask(2)值,設定g+sx許可權,並使倉庫可由組寫入。

    • allworldeverybody :group類似,但允許任何使用者瀏覽倉庫。

    • <perm> : 透過指定以0為字首的 3 位八進位制數字的許可權來覆蓋umask(2)設定。

  git init --shared=group

以上命令將倉庫設定為在使用者組之間共享。

因此,如果您是從頭開始一個專案,git init會設定您的版本控制。它也可以用於現有專案以開始跟蹤更改。

廣告