'\" t
.\"     Title: gitmodules
.\"    Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author]
.\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
.\"      Date: 05/06/2022
.\"    Manual: Git Manual
.\"    Source: Git 2.36.1.19.ge8005e4871
.\"  Language: English
.\"
.TH "GITMODULES" "5" "05/06/2022" "Git 2\&.36\&.1\&.19\&.ge8005e4" "Git Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
gitmodules \- Defining submodule properties
.SH "SYNOPSIS"
.sp
$GIT_WORK_TREE/\&.gitmodules
.SH "DESCRIPTION"
.sp
The \fB\&.gitmodules\fR file, located in the top\-level directory of a Git working tree, is a text file with a syntax matching the requirements of \fBgit-config\fR(1)\&.
.sp
The file contains one subsection per submodule, and the subsection value is the name of the submodule\&. The name is set to the path where the submodule has been added unless it was customized with the \fB\-\-name\fR option of \fIgit submodule add\fR\&. Each submodule section also contains the following required keys:
.PP
submodule\&.<name>\&.path
.RS 4
Defines the path, relative to the top\-level directory of the Git working tree, where the submodule is expected to be checked out\&. The path name must not end with a
\fB/\fR\&. All submodule paths must be unique within the
\fB\&.gitmodules\fR
file\&.
.RE
.PP
submodule\&.<name>\&.url
.RS 4
Defines a URL from which the submodule repository can be cloned\&. This may be either an absolute URL ready to be passed to
\fBgit-clone\fR(1)
or (if it begins with
\fB\&./\fR
or
\fB\&.\&./\fR) a location relative to the superproject\(cqs origin repository\&.
.RE
.sp
In addition, there are a number of optional keys:
.PP
submodule\&.<name>\&.update
.RS 4
Defines the default update procedure for the named submodule, i\&.e\&. how the submodule is updated by the
\fBgit submodule update\fR
command in the superproject\&. This is only used by
\fBgit submodule init\fR
to initialize the configuration variable of the same name\&. Allowed values here are
\fIcheckout\fR,
\fIrebase\fR,
\fImerge\fR
or
\fInone\fR\&. See description of
\fIupdate\fR
command in
\fBgit-submodule\fR(1)
for their meaning\&. For security reasons, the
\fI!command\fR
form is not accepted here\&.
.RE
.PP
submodule\&.<name>\&.branch
.RS 4
A remote branch name for tracking updates in the upstream submodule\&. If the option is not specified, it defaults to the remote
\fBHEAD\fR\&. A special value of
\fB\&.\fR
is used to indicate that the name of the branch in the submodule should be the same name as the current branch in the current repository\&. See the
\fB\-\-remote\fR
documentation in
\fBgit-submodule\fR(1)
for details\&.
.RE
.PP
submodule\&.<name>\&.fetchRecurseSubmodules
.RS 4
This option can be used to control recursive fetching of this submodule\&. If this option is also present in the submodule\(cqs entry in
\fB\&.git/config\fR
of the superproject, the setting there will override the one found in
\fB\&.gitmodules\fR\&. Both settings can be overridden on the command line by using the
\fB\-\-[no\-]recurse\-submodules\fR
option to
\fBgit fetch\fR
and
\fBgit pull\fR\&.
.RE
.PP
submodule\&.<name>\&.ignore
.RS 4
Defines under what circumstances
\fBgit status\fR
and the diff family show a submodule as modified\&. The following values are supported:
.PP
all
.RS 4
The submodule will never be considered modified (but will nonetheless show up in the output of status and commit when it has been staged)\&.
.RE
.PP
dirty
.RS 4
All changes to the submodule\(cqs work tree will be ignored, only committed differences between the
\fBHEAD\fR
of the submodule and its recorded state in the superproject are taken into account\&.
.RE
.PP
untracked
.RS 4
Only untracked files in submodules will be ignored\&. Committed differences and modifications to tracked files will show up\&.
.RE
.PP
none
.RS 4
No modifications to submodules are ignored, all of committed differences, and modifications to tracked and untracked files are shown\&. This is the default option\&.
.RE
.sp
If this option is also present in the submodule\(cqs entry in
\fB\&.git/config\fR
of the superproject, the setting there will override the one found in
\fB\&.gitmodules\fR\&.
.sp
Both settings can be overridden on the command line by using the
\fB\-\-ignore\-submodules\fR
option\&. The
\fBgit submodule\fR
commands are not affected by this setting\&.
.RE
.PP
submodule\&.<name>\&.shallow
.RS 4
When set to true, a clone of this submodule will be performed as a shallow clone (with a history depth of 1) unless the user explicitly asks for a non\-shallow clone\&.
.RE
.SH "NOTES"
.sp
Git does not allow the \fB\&.gitmodules\fR file within a working tree to be a symbolic link, and will refuse to check out such a tree entry\&. This keeps behavior consistent when the file is accessed from the index or a tree versus from the filesystem, and helps Git reliably enforce security checks of the file contents\&.
.SH "EXAMPLES"
.sp
Consider the following \fB\&.gitmodules\fR file:
.sp
.if n \{\
.RS 4
.\}
.nf
[submodule "libfoo"]
        path = include/foo
        url = git://foo\&.com/git/lib\&.git

[submodule "libbar"]
        path = include/bar
        url = git://bar\&.com/git/lib\&.git
.fi
.if n \{\
.RE
.\}
.sp
.sp
This defines two submodules, \fBlibfoo\fR and \fBlibbar\fR\&. These are expected to be checked out in the paths \fBinclude/foo\fR and \fBinclude/bar\fR, and for both submodules a URL is specified which can be used for cloning the submodules\&.
.SH "SEE ALSO"
.sp
\fBgit-submodule\fR(1), \fBgitsubmodules\fR(7), \fBgit-config\fR(1)
.SH "GIT"
.sp
Part of the \fBgit\fR(1) suite
