'\" t .\" Title: gitmodules .\" Author: [FIXME: author] [see http://www.docbook.org/tdg5/en/html/author] .\" Generator: DocBook XSL Stylesheets vsnapshot .\" Date: 11/25/2024 .\" Manual: Git Manual .\" Source: Git 2.47.1 .\" Language: English .\" .TH "GITMODULES" "5" "11/25/2024" "Git 2\&.47\&.1" "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\&.\&.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\&.\&.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\&.\&.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, but not \fI!command\fR (for security reasons)\&. See the description of the \fIupdate\fR command in \fBgit-submodule\fR(1) for more details\&. .RE .PP submodule\&.\&.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\&.\&.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\&.\&.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\&.\&.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