directory search
Guides gitattributes giteveryday gitglossary gitignore gitmodules gitrevisions gittutorial gitworkflows Administration git archive git bundle git clean git filter-branch git fsck git gc git instaweb git reflog Basic Snapshotting git add git commit git diff git mv git reset git rm git status Branching and Merging git branch git checkout git log git merge git mergetool git stash git tag Debugging git bisect git blame git grep Email git am git format-patch git request-pull git send-email External Systems git fast-import git svn Getting and Creating Projects git clone git init Git git annotate git archimport git bisect-lk2009 git check-attr git check-mailmap git check-ref-format git checkout-index git cherry git citool git column git credential git credential-cache git credential-store git cvsexportcommit git cvsimport git cvsserver git diff-files git diff-tree git difftool git fast-export git fetch-pack git fmt-merge-msg git get-tar-commit-id git gui git http-backend git http-fetch git http-push git imap-send git index-pack git interpret-trailers git ls-remote git ls-tree git mailinfo git mailsplit git merge-file git merge-index git merge-one-file git merge-tree git mktag git mktree git name-rev git notes git p4 git pack-objects git pack-redundant git pack-refs git parse-remote git patch-id git prune git prune-packed git quiltimport git receive-pack git remote-ext git remote-fd git remote-testgit git repack git replace git rerere git send-pack git sh-i18n git sh-setup git shell git show-branch git show-index git stripspace git unpack-file git unpack-objects git upload-archive git upload-pack git var git verify-commit git verify-tag git whatchanged git worktree Inspection and Comparison git describe git shortlog git show Miscellaneous api credentials api index gitcli gitcore tutorial gitcredentials gitcvs migration gitdiffcore githooks gitk gitnamespaces gitremote helpers gitrepository layout gitsubmodules gittutorial 2 gitweb gitweb.conf pack format User Manual Patching git apply git cherry-pick git rebase git revert Plumbing Commands git cat-file git check-ignore git commit-tree git count-objects git diff-index git for-each-ref git hash-object git ls-files git merge-base git read-tree git rev-list git rev-parse git show-ref git symbolic-ref git update-index git update-ref git verify-pack git write-tree Server Admin git daemon git update-server-info Setup and Config git git config git help Sharing and Updating Projects git fetch git pull git push git remote git submodule
characters

名称

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初始化相同名称的配置变量。这里允许的值是checkoutrebasemergenone。有关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/configof 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

这定义了两个子模块,libfoolibbar。这些预计的路径要被检出的include/fooinclude/bar,并为两个子模块被指定一个URL可以用于克隆子模块。

Previous article: Next article: