Git
English ▾ 主題 ▾ 最新版本 ▾ gitmodules 最後更新於 2.42.0

名稱

gitmodules - 定義子模組屬性

概要

$GIT_WORK_TREE/.gitmodules

描述

位於 Git 工作樹頂層目錄的 .gitmodules 檔案是一個文字檔案,其語法符合 git-config[1] 的要求。

該檔案包含每個子模組一個小節,小節的值是子模組的名稱。除非使用 git submodule add--name 選項自訂,否則名稱會設定為子模組加入的路徑。每個子模組小節也包含以下必要的鍵

submodule.<名稱>.path

定義相對於 Git 工作樹頂層目錄的路徑,子模組預期會被檢出到該路徑。路徑名稱不得以 / 結尾。所有子模組路徑在 .gitmodules 檔案中必須是唯一的。

submodule.<名稱>.url

定義一個 URL,子模組儲存庫可以從該 URL 複製。這可以是準備傳遞給 git-clone[1] 的絕對 URL,或者(如果它以 ./../ 開頭)相對於超專案原始儲存庫的位置。

此外,還有許多可選鍵

submodule.<名稱>.update

定義指定子模組的預設更新程序,也就是超專案中 git submodule update 命令如何更新子模組。這僅由 git submodule init 用於初始化同名的配置變數。此處允許的值為 checkoutrebasemergenone,但不允許 !command(為了安全性)。請參閱 git-submodule[1]update 命令的描述以了解更多詳細資訊。

submodule.<名稱>.branch

用於追蹤上游子模組更新的遠端分支名稱。如果未指定此選項,則預設為遠端 HEAD。特殊值 . 用於表示子模組中的分支名稱應與目前儲存庫中的目前分支名稱相同。請參閱 git-submodule[1]--remote 文件的詳細資訊。

submodule.<名稱>.fetchRecurseSubmodules

此選項可用於控制此子模組的遞迴提取。如果超專案的 .git/config 中子模組的條目中也存在此選項,則該處的設定將覆寫 .gitmodules 中的設定。這兩個設定都可以在命令列中使用 git fetchgit pull--[no-]recurse-submodules 選項覆寫。

submodule.<名稱>.ignore

定義在何種情況下,git status 和 diff 系列會將子模組顯示為已修改。支援以下值

all

子模組永遠不會被視為已修改(但當它已暫存時,仍然會顯示在 status 和 commit 的輸出中)。

dirty

所有對子模組工作樹的變更都將被忽略,只會考慮子模組的 HEAD 與超專案中記錄的狀態之間已提交的差異。

untracked

只會忽略子模組中未追蹤的檔案。已提交的差異和對已追蹤檔案的修改將會顯示。

none

不會忽略對子模組的修改,所有已提交的差異以及對已追蹤和未追蹤檔案的修改都會顯示。這是預設選項。

如果超專案的 .git/config 中子模組的條目中也存在此選項,則該處的設定將覆寫 .gitmodules 中的設定。

這兩個設定都可以在命令列中使用 --ignore-submodules 選項覆寫。git submodule 命令不受此設定的影響。

submodule.<名稱>.shallow

設定為 true 時,除非使用者明確要求非淺層複製,否則此子模組的複製將執行為淺層複製(歷史深度為 1)。

附註

Git 不允許工作樹內的 .gitmodules 檔案為符號連結,並且會拒絕檢出此類樹狀結構條目。這使得從索引或樹狀結構存取檔案時的行為保持一致,並有助於 Git 可靠地強制執行檔案內容的安全性檢查。

範例

考慮以下 .gitmodules 檔案

[submodule "libfoo"]
	path = include/foo
	url = git://foo.com/git/lib.git

[submodule "libbar"]
	path = include/bar
	url = git://bar.com/git/lib.git

這定義了兩個子模組,libfoolibbar。這些子模組預計會在路徑 include/fooinclude/bar 中檢出,並且為兩個子模組指定了一個 URL,可用於複製子模組。

GIT

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

scroll-to-top