gitmodules
gitmodules
名称
gitmodules - 定义子模块属性
概要
$GIT_WORK_DIR/.gitmodules
描述
.gitmodules
文件位于 Git 工作树的顶层目录中,是一个文本文件,其语法与 git-config [1] 的要求相匹配。
文件包含每个子模块的一个子部分,并且子部分值是子模块的名称。名称被设置为子模块已被添加的路径,除非它是用--name
选项自定义的git submodule add
。每个子模块部分还包含以下必需的键:
submodule.<name>.path
定义相对于 Git 工作树的顶级目录的路径,其中子模块预计将签出。路径名称不能以/
。所有子模块路径在 .gitmodules 文件中必须是唯一的。
submodule.<name>.url
定义可从中克隆子模块存储库的URL。这可能是一个准备好传递给 git-clone [1] 或者(如果它以./或../开头)相对于超级项目的源存储库的位置的绝对 URL。
另外,还有一些可选的键:
submodule.<name>.update
定义指定子模块的默认更新过程,即通过超级项目中的 “git submodule update
” 命令更新子模块的方式。这仅用于git submodule init
初始化相同名称的配置变量。这里允许的值是checkout
,rebase
,merge
或none
。有关update
它们的含义,请参阅 git-submodule [1] 中的命令说明。请注意,!command
出于安全原因,表单在此处被故意忽略。
submodule.<name>.branch
用于跟踪上游子模块中更新的远程分支名称。如果该选项未指定,则默认为master
。特殊值.
用于指示子模块中分支的名称应与当前存储库中当前分支的名称相同。有关--remote
详细信息,请参阅
git-submodule [1] 中的文档。
submodule.<name>.fetchRecurseSubmodules
选项可用于控制此子模块的递归提取。如果此选项也存在于超级项目的 .git / config 子模块条目中,那么该设置将覆盖. gitmodules 中的设置。通过在 “git fetch” 和 “git pull” 中使用 “--no-recurse-submodules” 选项,可以在命令行上覆盖这两个设置。
submodule.<name>.ignore
定义在什么情况下,“git status” 和 diff 系列显示已修改的子模块。支持以下值:
all
子模块永远不会被视为已修改(但仍会显示在状态的输出中,并在已上载时进行提交)。
dirty
对子模块工作树的所有更改都将被忽略,只会考虑子模块的 HEAD 与其在超级项目中记录的状态之间的差异。
untracked
子模块中只有未跟踪的文件将被忽略。承诺的差异和修改被跟踪的文件将显示出来。
none
没有对子模块的修改被忽略,所有提交的差异以及对跟踪和未跟踪文件的修改都会显示出来。这是默认选项。
If this option is also present in the submodules entry in .git/config
of the superproject, the setting there will override the one found in
.gitmodules.
Both settings can be overridden on the command line by using the
"--ignore-submodule" option. The 'git submodule' commands are not
affected by this setting.
submodule.<name>.shallow
设置为 true 时,此子模块的克隆将作为浅层克隆(历史深度为1)执行,除非用户明确要求使用非浅层克隆。
例子
考虑下面的 .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
这定义了两个子模块,libfoo
和libbar
。这些预计的路径要被检出的include/foo
和include/bar
,并为两个子模块被指定一个URL可以用于克隆子模块。