跳转到主要内容

submodule

submodule.<name>.url
The URL for a submodule. This variable is copied from the .gitmodules file to the git config via ’git submodule init’. The user can change the configured URL before obtaining the submodule via ’git submodule update’. If neither submodule.<name>.active nor submodule.active are set, the presence of this variable is used as a fallback to indicate whether the submodule is of interest to git commands. See linkgit:git-submodule[1] and linkgit:gitmodules[5] for details.

submodule.<name>.update
The method by which a submodule is updated by ’git submodule update’, which is the only affected command, others such as ’git checkout --recurse-submodules’ are unaffected. It exists for historical reasons, when ’git submodule’ was the only command to interact with submodules; settings like submodule.active and pull.rebase are more specific. It is populated by git submodule init from the linkgit:gitmodules[5] file. See description of ’update’ command in linkgit:git-submodule[1].

submodule.<name>.branch
The remote branch name for a submodule, used by git submodule update --remote. Set this option to override the value found in the .gitmodules file. See linkgit:git-submodule[1] and linkgit:gitmodules[5] for details.

submodule.<name>.fetchRecurseSubmodules
This option can be used to control recursive fetching of this submodule. It can be overridden by using the --[no-]recurse-submodules command-line option to "git fetch" and "git pull". This setting will override that from in the linkgit:gitmodules[5] file.

submodule.<name>.ignore
Defines under what circumstances "git status" and the diff family show a submodule as modified. When set to "all" will never consider the submodule modified. It can nevertheless be staged using the option --force and it will then show up in the output of status. When set to "dirty" will ignore all changes to the submodule’s work tree and takes only differences between the HEAD of the submodule and the commit recorded in the superproject into account. "untracked" will additionally let submodules with modified tracked files in their work tree show up. When set to "none" (default) it also shows submodules as changed if they have untracked files in their work tree. This setting overrides any setting made in .gitmodules for this submodule, both settings can be overridden on the command line by using the "--ignore-submodules" option. The ’git submodule’ commands are not affected by this setting.

submodule.<name>.active
Boolean value indicating if the submodule is of interest to git commands. This config option takes precedence over the submodule.active config option. See linkgit:gitsubmodules[7] for details.

submodule.<name>.gitdir
This sets the gitdir path for submodule <name>. This configuration is respected when extensions.submodulePathConfig is enabled, otherwise it has no effect. When enabled, this config becomes the single source of truth for submodule gitdir paths and Git will error if it is missing. See linkgit:git-config[1] for details.

submodule.active
A repeated field which contains a pathspec used to match against a submodule’s path to determine if the submodule is of interest to git commands. See linkgit:gitsubmodules[7] for details.

submodule.recurse
A boolean indicating if commands should enable the --recurse-submodules option by default. Defaults to false.

When set to true, it can be deactivated via the --no-recurse-submodules option. Note that some Git commands lacking this option may call some of the above commands affected by submodule.recurse; for instance git remote update will call git fetch but does not have a --no-recurse-submodules option. For these commands a workaround is to temporarily change the configuration value by using git -c submodule.recurse=0.

The following list shows the commands that accept --recurse-submodules and whether they are supported by this setting.

  • checkout, fetch, grep, pull, push, read-tree, reset, restore and switch are always supported.

  • clone and ls-files are not supported.

  • branch is supported only if submodule.propagateBranches is enabled

submodule.propagateBranches
[EXPERIMENTAL] A boolean that enables branching support when using --recurse-submodules or submodule.recurse=true. Enabling this will allow certain commands to accept --recurse-submodules and certain commands that already accept --recurse-submodules will now consider branches. Defaults to false.

submodule.fetchJobs
Specifies how many submodules are fetched/cloned at the same time. A positive integer allows up to that number of submodules fetched in parallel. A value of 0 will give some reasonable default. If unset, it defaults to 1.

submodule.alternateLocation
Specifies how the submodules obtain alternates when submodules are cloned. Possible values are no, superproject. By default no is assumed, which doesn’t add references. When the value is set to superproject the submodule to be cloned computes its alternates location relative to the superprojects alternate.

submodule.alternateErrorStrategy
Specifies how to treat errors with the alternates for a submodule as computed via submodule.alternateLocation. Possible values are ignore, info, die. Default is die. Note that if set to ignore or info, and if there is an error with the computed alternate, the clone proceeds as if no alternate was specified.