Autogenerated HTML docs for v2.47.0-288-g090d2
[git-htmldocs.git] / gitsubmodules.html
blobb2f71f05da7aeae9612686b1a1db1c828afe3cca
1 <!DOCTYPE html>
2 <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
3 <head>
4 <meta charset="UTF-8"/>
5 <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
6 <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
7 <meta name="generator" content="Asciidoctor 2.0.20"/>
8 <title>gitsubmodules(7)</title>
9 <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700"/>
10 <style>
11 /*! Asciidoctor default stylesheet | MIT License | https://asciidoctor.org */
12 /* Uncomment the following line when using as a custom stylesheet */
13 /* @import "https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700"; */
14 html{font-family:sans-serif;-webkit-text-size-adjust:100%}
15 a{background:none}
16 a:focus{outline:thin dotted}
17 a:active,a:hover{outline:0}
18 h1{font-size:2em;margin:.67em 0}
19 b,strong{font-weight:bold}
20 abbr{font-size:.9em}
21 abbr[title]{cursor:help;border-bottom:1px dotted #dddddf;text-decoration:none}
22 dfn{font-style:italic}
23 hr{height:0}
24 mark{background:#ff0;color:#000}
25 code,kbd,pre,samp{font-family:monospace;font-size:1em}
26 pre{white-space:pre-wrap}
27 q{quotes:"\201C" "\201D" "\2018" "\2019"}
28 small{font-size:80%}
29 sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}
30 sup{top:-.5em}
31 sub{bottom:-.25em}
32 img{border:0}
33 svg:not(:root){overflow:hidden}
34 figure{margin:0}
35 audio,video{display:inline-block}
36 audio:not([controls]){display:none;height:0}
37 fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}
38 legend{border:0;padding:0}
39 button,input,select,textarea{font-family:inherit;font-size:100%;margin:0}
40 button,input{line-height:normal}
41 button,select{text-transform:none}
42 button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}
43 button[disabled],html input[disabled]{cursor:default}
44 input[type=checkbox],input[type=radio]{padding:0}
45 button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}
46 textarea{overflow:auto;vertical-align:top}
47 table{border-collapse:collapse;border-spacing:0}
48 *,::before,::after{box-sizing:border-box}
49 html,body{font-size:100%}
50 body{background:#fff;color:rgba(0,0,0,.8);padding:0;margin:0;font-family:"Noto Serif","DejaVu Serif",serif;line-height:1;position:relative;cursor:auto;-moz-tab-size:4;-o-tab-size:4;tab-size:4;word-wrap:anywhere;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}
51 a:hover{cursor:pointer}
52 img,object,embed{max-width:100%;height:auto}
53 object,embed{height:100%}
54 img{-ms-interpolation-mode:bicubic}
55 .left{float:left!important}
56 .right{float:right!important}
57 .text-left{text-align:left!important}
58 .text-right{text-align:right!important}
59 .text-center{text-align:center!important}
60 .text-justify{text-align:justify!important}
61 .hide{display:none}
62 img,object,svg{display:inline-block;vertical-align:middle}
63 textarea{height:auto;min-height:50px}
64 select{width:100%}
65 .subheader,.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{line-height:1.45;color:#7a2518;font-weight:400;margin-top:0;margin-bottom:.25em}
66 div,dl,dt,dd,ul,ol,li,h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0}
67 a{color:#2156a5;text-decoration:underline;line-height:inherit}
68 a:hover,a:focus{color:#1d4b8f}
69 a img{border:0}
70 p{line-height:1.6;margin-bottom:1.25em;text-rendering:optimizeLegibility}
71 p aside{font-size:.875em;line-height:1.35;font-style:italic}
72 h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{font-family:"Open Sans","DejaVu Sans",sans-serif;font-weight:300;font-style:normal;color:#ba3925;text-rendering:optimizeLegibility;margin-top:1em;margin-bottom:.5em;line-height:1.0125em}
73 h1 small,h2 small,h3 small,#toctitle small,.sidebarblock>.content>.title small,h4 small,h5 small,h6 small{font-size:60%;color:#e99b8f;line-height:0}
74 h1{font-size:2.125em}
75 h2{font-size:1.6875em}
76 h3,#toctitle,.sidebarblock>.content>.title{font-size:1.375em}
77 h4,h5{font-size:1.125em}
78 h6{font-size:1em}
79 hr{border:solid #dddddf;border-width:1px 0 0;clear:both;margin:1.25em 0 1.1875em}
80 em,i{font-style:italic;line-height:inherit}
81 strong,b{font-weight:bold;line-height:inherit}
82 small{font-size:60%;line-height:inherit}
83 code{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;font-weight:400;color:rgba(0,0,0,.9)}
84 ul,ol,dl{line-height:1.6;margin-bottom:1.25em;list-style-position:outside;font-family:inherit}
85 ul,ol{margin-left:1.5em}
86 ul li ul,ul li ol{margin-left:1.25em;margin-bottom:0}
87 ul.circle{list-style-type:circle}
88 ul.disc{list-style-type:disc}
89 ul.square{list-style-type:square}
90 ul.circle ul:not([class]),ul.disc ul:not([class]),ul.square ul:not([class]){list-style:inherit}
91 ol li ul,ol li ol{margin-left:1.25em;margin-bottom:0}
92 dl dt{margin-bottom:.3125em;font-weight:bold}
93 dl dd{margin-bottom:1.25em}
94 blockquote{margin:0 0 1.25em;padding:.5625em 1.25em 0 1.1875em;border-left:1px solid #ddd}
95 blockquote,blockquote p{line-height:1.6;color:rgba(0,0,0,.85)}
96 @media screen and (min-width:768px){h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2}
97 h1{font-size:2.75em}
98 h2{font-size:2.3125em}
99 h3,#toctitle,.sidebarblock>.content>.title{font-size:1.6875em}
100 h4{font-size:1.4375em}}
101 table{background:#fff;margin-bottom:1.25em;border:1px solid #dedede;word-wrap:normal}
102 table thead,table tfoot{background:#f7f8f7}
103 table thead tr th,table thead tr td,table tfoot tr th,table tfoot tr td{padding:.5em .625em .625em;font-size:inherit;color:rgba(0,0,0,.8);text-align:left}
104 table tr th,table tr td{padding:.5625em .625em;font-size:inherit;color:rgba(0,0,0,.8)}
105 table tr.even,table tr.alt{background:#f8f8f7}
106 table thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{line-height:1.6}
107 h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2;word-spacing:-.05em}
108 h1 strong,h2 strong,h3 strong,#toctitle strong,.sidebarblock>.content>.title strong,h4 strong,h5 strong,h6 strong{font-weight:400}
109 .center{margin-left:auto;margin-right:auto}
110 .stretch{width:100%}
111 .clearfix::before,.clearfix::after,.float-group::before,.float-group::after{content:" ";display:table}
112 .clearfix::after,.float-group::after{clear:both}
113 :not(pre).nobreak{word-wrap:normal}
114 :not(pre).nowrap{white-space:nowrap}
115 :not(pre).pre-wrap{white-space:pre-wrap}
116 :not(pre):not([class^=L])>code{font-size:.9375em;font-style:normal!important;letter-spacing:0;padding:.1em .5ex;word-spacing:-.15em;background:#f7f7f8;border-radius:4px;line-height:1.45;text-rendering:optimizeSpeed}
117 pre{color:rgba(0,0,0,.9);font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;line-height:1.45;text-rendering:optimizeSpeed}
118 pre code,pre pre{color:inherit;font-size:inherit;line-height:inherit}
119 pre>code{display:block}
120 pre.nowrap,pre.nowrap pre{white-space:pre;word-wrap:normal}
121 em em{font-style:normal}
122 strong strong{font-weight:400}
123 .keyseq{color:rgba(51,51,51,.8)}
124 kbd{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;display:inline-block;color:rgba(0,0,0,.8);font-size:.65em;line-height:1.45;background:#f7f7f7;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 0 rgba(0,0,0,.2),inset 0 0 0 .1em #fff;margin:0 .15em;padding:.2em .5em;vertical-align:middle;position:relative;top:-.1em;white-space:nowrap}
125 .keyseq kbd:first-child{margin-left:0}
126 .keyseq kbd:last-child{margin-right:0}
127 .menuseq,.menuref{color:#000}
128 .menuseq b:not(.caret),.menuref{font-weight:inherit}
129 .menuseq{word-spacing:-.02em}
130 .menuseq b.caret{font-size:1.25em;line-height:.8}
131 .menuseq i.caret{font-weight:bold;text-align:center;width:.45em}
132 b.button::before,b.button::after{position:relative;top:-1px;font-weight:400}
133 b.button::before{content:"[";padding:0 3px 0 2px}
134 b.button::after{content:"]";padding:0 2px 0 3px}
135 p a>code:hover{color:rgba(0,0,0,.9)}
136 #header,#content,#footnotes,#footer{width:100%;margin:0 auto;max-width:62.5em;*zoom:1;position:relative;padding-left:.9375em;padding-right:.9375em}
137 #header::before,#header::after,#content::before,#content::after,#footnotes::before,#footnotes::after,#footer::before,#footer::after{content:" ";display:table}
138 #header::after,#content::after,#footnotes::after,#footer::after{clear:both}
139 #content{margin-top:1.25em}
140 #content::before{content:none}
141 #header>h1:first-child{color:rgba(0,0,0,.85);margin-top:2.25rem;margin-bottom:0}
142 #header>h1:first-child+#toc{margin-top:8px;border-top:1px solid #dddddf}
143 #header>h1:only-child,body.toc2 #header>h1:nth-last-child(2){border-bottom:1px solid #dddddf;padding-bottom:8px}
144 #header .details{border-bottom:1px solid #dddddf;line-height:1.45;padding-top:.25em;padding-bottom:.25em;padding-left:.25em;color:rgba(0,0,0,.6);display:flex;flex-flow:row wrap}
145 #header .details span:first-child{margin-left:-.125em}
146 #header .details span.email a{color:rgba(0,0,0,.85)}
147 #header .details br{display:none}
148 #header .details br+span::before{content:"\00a0\2013\00a0"}
149 #header .details br+span.author::before{content:"\00a0\22c5\00a0";color:rgba(0,0,0,.85)}
150 #header .details br+span#revremark::before{content:"\00a0|\00a0"}
151 #header #revnumber{text-transform:capitalize}
152 #header #revnumber::after{content:"\00a0"}
153 #content>h1:first-child:not([class]){color:rgba(0,0,0,.85);border-bottom:1px solid #dddddf;padding-bottom:8px;margin-top:0;padding-top:1rem;margin-bottom:1.25rem}
154 #toc{border-bottom:1px solid #e7e7e9;padding-bottom:.5em}
155 #toc>ul{margin-left:.125em}
156 #toc ul.sectlevel0>li>a{font-style:italic}
157 #toc ul.sectlevel0 ul.sectlevel1{margin:.5em 0}
158 #toc ul{font-family:"Open Sans","DejaVu Sans",sans-serif;list-style-type:none}
159 #toc li{line-height:1.3334;margin-top:.3334em}
160 #toc a{text-decoration:none}
161 #toc a:active{text-decoration:underline}
162 #toctitle{color:#7a2518;font-size:1.2em}
163 @media screen and (min-width:768px){#toctitle{font-size:1.375em}
164 body.toc2{padding-left:15em;padding-right:0}
165 #toc.toc2{margin-top:0!important;background:#f8f8f7;position:fixed;width:15em;left:0;top:0;border-right:1px solid #e7e7e9;border-top-width:0!important;border-bottom-width:0!important;z-index:1000;padding:1.25em 1em;height:100%;overflow:auto}
166 #toc.toc2 #toctitle{margin-top:0;margin-bottom:.8rem;font-size:1.2em}
167 #toc.toc2>ul{font-size:.9em;margin-bottom:0}
168 #toc.toc2 ul ul{margin-left:0;padding-left:1em}
169 #toc.toc2 ul.sectlevel0 ul.sectlevel1{padding-left:0;margin-top:.5em;margin-bottom:.5em}
170 body.toc2.toc-right{padding-left:0;padding-right:15em}
171 body.toc2.toc-right #toc.toc2{border-right-width:0;border-left:1px solid #e7e7e9;left:auto;right:0}}
172 @media screen and (min-width:1280px){body.toc2{padding-left:20em;padding-right:0}
173 #toc.toc2{width:20em}
174 #toc.toc2 #toctitle{font-size:1.375em}
175 #toc.toc2>ul{font-size:.95em}
176 #toc.toc2 ul ul{padding-left:1.25em}
177 body.toc2.toc-right{padding-left:0;padding-right:20em}}
178 #content #toc{border:1px solid #e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;border-radius:4px}
179 #content #toc>:first-child{margin-top:0}
180 #content #toc>:last-child{margin-bottom:0}
181 #footer{max-width:none;background:rgba(0,0,0,.8);padding:1.25em}
182 #footer-text{color:hsla(0,0%,100%,.8);line-height:1.44}
183 #content{margin-bottom:.625em}
184 .sect1{padding-bottom:.625em}
185 @media screen and (min-width:768px){#content{margin-bottom:1.25em}
186 .sect1{padding-bottom:1.25em}}
187 .sect1:last-child{padding-bottom:0}
188 .sect1+.sect1{border-top:1px solid #e7e7e9}
189 #content h1>a.anchor,h2>a.anchor,h3>a.anchor,#toctitle>a.anchor,.sidebarblock>.content>.title>a.anchor,h4>a.anchor,h5>a.anchor,h6>a.anchor{position:absolute;z-index:1001;width:1.5ex;margin-left:-1.5ex;display:block;text-decoration:none!important;visibility:hidden;text-align:center;font-weight:400}
190 #content h1>a.anchor::before,h2>a.anchor::before,h3>a.anchor::before,#toctitle>a.anchor::before,.sidebarblock>.content>.title>a.anchor::before,h4>a.anchor::before,h5>a.anchor::before,h6>a.anchor::before{content:"\00A7";font-size:.85em;display:block;padding-top:.1em}
191 #content h1:hover>a.anchor,#content h1>a.anchor:hover,h2:hover>a.anchor,h2>a.anchor:hover,h3:hover>a.anchor,#toctitle:hover>a.anchor,.sidebarblock>.content>.title:hover>a.anchor,h3>a.anchor:hover,#toctitle>a.anchor:hover,.sidebarblock>.content>.title>a.anchor:hover,h4:hover>a.anchor,h4>a.anchor:hover,h5:hover>a.anchor,h5>a.anchor:hover,h6:hover>a.anchor,h6>a.anchor:hover{visibility:visible}
192 #content h1>a.link,h2>a.link,h3>a.link,#toctitle>a.link,.sidebarblock>.content>.title>a.link,h4>a.link,h5>a.link,h6>a.link{color:#ba3925;text-decoration:none}
193 #content h1>a.link:hover,h2>a.link:hover,h3>a.link:hover,#toctitle>a.link:hover,.sidebarblock>.content>.title>a.link:hover,h4>a.link:hover,h5>a.link:hover,h6>a.link:hover{color:#a53221}
194 details,.audioblock,.imageblock,.literalblock,.listingblock,.stemblock,.videoblock{margin-bottom:1.25em}
195 details{margin-left:1.25rem}
196 details>summary{cursor:pointer;display:block;position:relative;line-height:1.6;margin-bottom:.625rem;outline:none;-webkit-tap-highlight-color:transparent}
197 details>summary::-webkit-details-marker{display:none}
198 details>summary::before{content:"";border:solid transparent;border-left:solid;border-width:.3em 0 .3em .5em;position:absolute;top:.5em;left:-1.25rem;transform:translateX(15%)}
199 details[open]>summary::before{border:solid transparent;border-top:solid;border-width:.5em .3em 0;transform:translateY(15%)}
200 details>summary::after{content:"";width:1.25rem;height:1em;position:absolute;top:.3em;left:-1.25rem}
201 .admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{text-rendering:optimizeLegibility;text-align:left;font-family:"Noto Serif","DejaVu Serif",serif;font-size:1rem;font-style:italic}
202 table.tableblock.fit-content>caption.title{white-space:nowrap;width:0}
203 .paragraph.lead>p,#preamble>.sectionbody>[class=paragraph]:first-of-type p{font-size:1.21875em;line-height:1.6;color:rgba(0,0,0,.85)}
204 .admonitionblock>table{border-collapse:separate;border:0;background:none;width:100%}
205 .admonitionblock>table td.icon{text-align:center;width:80px}
206 .admonitionblock>table td.icon img{max-width:none}
207 .admonitionblock>table td.icon .title{font-weight:bold;font-family:"Open Sans","DejaVu Sans",sans-serif;text-transform:uppercase}
208 .admonitionblock>table td.content{padding-left:1.125em;padding-right:1.25em;border-left:1px solid #dddddf;color:rgba(0,0,0,.6);word-wrap:anywhere}
209 .admonitionblock>table td.content>:last-child>:last-child{margin-bottom:0}
210 .exampleblock>.content{border:1px solid #e6e6e6;margin-bottom:1.25em;padding:1.25em;background:#fff;border-radius:4px}
211 .sidebarblock{border:1px solid #dbdbd6;margin-bottom:1.25em;padding:1.25em;background:#f3f3f2;border-radius:4px}
212 .sidebarblock>.content>.title{color:#7a2518;margin-top:0;text-align:center}
213 .exampleblock>.content>:first-child,.sidebarblock>.content>:first-child{margin-top:0}
214 .exampleblock>.content>:last-child,.exampleblock>.content>:last-child>:last-child,.exampleblock>.content .olist>ol>li:last-child>:last-child,.exampleblock>.content .ulist>ul>li:last-child>:last-child,.exampleblock>.content .qlist>ol>li:last-child>:last-child,.sidebarblock>.content>:last-child,.sidebarblock>.content>:last-child>:last-child,.sidebarblock>.content .olist>ol>li:last-child>:last-child,.sidebarblock>.content .ulist>ul>li:last-child>:last-child,.sidebarblock>.content .qlist>ol>li:last-child>:last-child{margin-bottom:0}
215 .literalblock pre,.listingblock>.content>pre{border-radius:4px;overflow-x:auto;padding:1em;font-size:.8125em}
216 @media screen and (min-width:768px){.literalblock pre,.listingblock>.content>pre{font-size:.90625em}}
217 @media screen and (min-width:1280px){.literalblock pre,.listingblock>.content>pre{font-size:1em}}
218 .literalblock pre,.listingblock>.content>pre:not(.highlight),.listingblock>.content>pre[class=highlight],.listingblock>.content>pre[class^="highlight "]{background:#f7f7f8}
219 .literalblock.output pre{color:#f7f7f8;background:rgba(0,0,0,.9)}
220 .listingblock>.content{position:relative}
221 .listingblock code[data-lang]::before{display:none;content:attr(data-lang);position:absolute;font-size:.75em;top:.425rem;right:.5rem;line-height:1;text-transform:uppercase;color:inherit;opacity:.5}
222 .listingblock:hover code[data-lang]::before{display:block}
223 .listingblock.terminal pre .command::before{content:attr(data-prompt);padding-right:.5em;color:inherit;opacity:.5}
224 .listingblock.terminal pre .command:not([data-prompt])::before{content:"$"}
225 .listingblock pre.highlightjs{padding:0}
226 .listingblock pre.highlightjs>code{padding:1em;border-radius:4px}
227 .listingblock pre.prettyprint{border-width:0}
228 .prettyprint{background:#f7f7f8}
229 pre.prettyprint .linenums{line-height:1.45;margin-left:2em}
230 pre.prettyprint li{background:none;list-style-type:inherit;padding-left:0}
231 pre.prettyprint li code[data-lang]::before{opacity:1}
232 pre.prettyprint li:not(:first-child) code[data-lang]::before{display:none}
233 table.linenotable{border-collapse:separate;border:0;margin-bottom:0;background:none}
234 table.linenotable td[class]{color:inherit;vertical-align:top;padding:0;line-height:inherit;white-space:normal}
235 table.linenotable td.code{padding-left:.75em}
236 table.linenotable td.linenos,pre.pygments .linenos{border-right:1px solid;opacity:.35;padding-right:.5em;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}
237 pre.pygments span.linenos{display:inline-block;margin-right:.75em}
238 .quoteblock{margin:0 1em 1.25em 1.5em;display:table}
239 .quoteblock:not(.excerpt)>.title{margin-left:-1.5em;margin-bottom:.75em}
240 .quoteblock blockquote,.quoteblock p{color:rgba(0,0,0,.85);font-size:1.15rem;line-height:1.75;word-spacing:.1em;letter-spacing:0;font-style:italic;text-align:justify}
241 .quoteblock blockquote{margin:0;padding:0;border:0}
242 .quoteblock blockquote::before{content:"\201c";float:left;font-size:2.75em;font-weight:bold;line-height:.6em;margin-left:-.6em;color:#7a2518;text-shadow:0 1px 2px rgba(0,0,0,.1)}
243 .quoteblock blockquote>.paragraph:last-child p{margin-bottom:0}
244 .quoteblock .attribution{margin-top:.75em;margin-right:.5ex;text-align:right}
245 .verseblock{margin:0 1em 1.25em}
246 .verseblock pre{font-family:"Open Sans","DejaVu Sans",sans-serif;font-size:1.15rem;color:rgba(0,0,0,.85);font-weight:300;text-rendering:optimizeLegibility}
247 .verseblock pre strong{font-weight:400}
248 .verseblock .attribution{margin-top:1.25rem;margin-left:.5ex}
249 .quoteblock .attribution,.verseblock .attribution{font-size:.9375em;line-height:1.45;font-style:italic}
250 .quoteblock .attribution br,.verseblock .attribution br{display:none}
251 .quoteblock .attribution cite,.verseblock .attribution cite{display:block;letter-spacing:-.025em;color:rgba(0,0,0,.6)}
252 .quoteblock.abstract blockquote::before,.quoteblock.excerpt blockquote::before,.quoteblock .quoteblock blockquote::before{display:none}
253 .quoteblock.abstract blockquote,.quoteblock.abstract p,.quoteblock.excerpt blockquote,.quoteblock.excerpt p,.quoteblock .quoteblock blockquote,.quoteblock .quoteblock p{line-height:1.6;word-spacing:0}
254 .quoteblock.abstract{margin:0 1em 1.25em;display:block}
255 .quoteblock.abstract>.title{margin:0 0 .375em;font-size:1.15em;text-align:center}
256 .quoteblock.excerpt>blockquote,.quoteblock .quoteblock{padding:0 0 .25em 1em;border-left:.25em solid #dddddf}
257 .quoteblock.excerpt,.quoteblock .quoteblock{margin-left:0}
258 .quoteblock.excerpt blockquote,.quoteblock.excerpt p,.quoteblock .quoteblock blockquote,.quoteblock .quoteblock p{color:inherit;font-size:1.0625rem}
259 .quoteblock.excerpt .attribution,.quoteblock .quoteblock .attribution{color:inherit;font-size:.85rem;text-align:left;margin-right:0}
260 p.tableblock:last-child{margin-bottom:0}
261 td.tableblock>.content{margin-bottom:1.25em;word-wrap:anywhere}
262 td.tableblock>.content>:last-child{margin-bottom:-1.25em}
263 table.tableblock,th.tableblock,td.tableblock{border:0 solid #dedede}
264 table.grid-all>*>tr>*{border-width:1px}
265 table.grid-cols>*>tr>*{border-width:0 1px}
266 table.grid-rows>*>tr>*{border-width:1px 0}
267 table.frame-all{border-width:1px}
268 table.frame-ends{border-width:1px 0}
269 table.frame-sides{border-width:0 1px}
270 table.frame-none>colgroup+*>:first-child>*,table.frame-sides>colgroup+*>:first-child>*{border-top-width:0}
271 table.frame-none>:last-child>:last-child>*,table.frame-sides>:last-child>:last-child>*{border-bottom-width:0}
272 table.frame-none>*>tr>:first-child,table.frame-ends>*>tr>:first-child{border-left-width:0}
273 table.frame-none>*>tr>:last-child,table.frame-ends>*>tr>:last-child{border-right-width:0}
274 table.stripes-all>*>tr,table.stripes-odd>*>tr:nth-of-type(odd),table.stripes-even>*>tr:nth-of-type(even),table.stripes-hover>*>tr:hover{background:#f8f8f7}
275 th.halign-left,td.halign-left{text-align:left}
276 th.halign-right,td.halign-right{text-align:right}
277 th.halign-center,td.halign-center{text-align:center}
278 th.valign-top,td.valign-top{vertical-align:top}
279 th.valign-bottom,td.valign-bottom{vertical-align:bottom}
280 th.valign-middle,td.valign-middle{vertical-align:middle}
281 table thead th,table tfoot th{font-weight:bold}
282 tbody tr th{background:#f7f8f7}
283 tbody tr th,tbody tr th p,tfoot tr th,tfoot tr th p{color:rgba(0,0,0,.8);font-weight:bold}
284 p.tableblock>code:only-child{background:none;padding:0}
285 p.tableblock{font-size:1em}
286 ol{margin-left:1.75em}
287 ul li ol{margin-left:1.5em}
288 dl dd{margin-left:1.125em}
289 dl dd:last-child,dl dd:last-child>:last-child{margin-bottom:0}
290 li p,ul dd,ol dd,.olist .olist,.ulist .ulist,.ulist .olist,.olist .ulist{margin-bottom:.625em}
291 ul.checklist,ul.none,ol.none,ul.no-bullet,ol.no-bullet,ol.unnumbered,ul.unstyled,ol.unstyled{list-style-type:none}
292 ul.no-bullet,ol.no-bullet,ol.unnumbered{margin-left:.625em}
293 ul.unstyled,ol.unstyled{margin-left:0}
294 li>p:empty:only-child::before{content:"";display:inline-block}
295 ul.checklist>li>p:first-child{margin-left:-1em}
296 ul.checklist>li>p:first-child>.fa-square-o:first-child,ul.checklist>li>p:first-child>.fa-check-square-o:first-child{width:1.25em;font-size:.8em;position:relative;bottom:.125em}
297 ul.checklist>li>p:first-child>input[type=checkbox]:first-child{margin-right:.25em}
298 ul.inline{display:flex;flex-flow:row wrap;list-style:none;margin:0 0 .625em -1.25em}
299 ul.inline>li{margin-left:1.25em}
300 .unstyled dl dt{font-weight:400;font-style:normal}
301 ol.arabic{list-style-type:decimal}
302 ol.decimal{list-style-type:decimal-leading-zero}
303 ol.loweralpha{list-style-type:lower-alpha}
304 ol.upperalpha{list-style-type:upper-alpha}
305 ol.lowerroman{list-style-type:lower-roman}
306 ol.upperroman{list-style-type:upper-roman}
307 ol.lowergreek{list-style-type:lower-greek}
308 .hdlist>table,.colist>table{border:0;background:none}
309 .hdlist>table>tbody>tr,.colist>table>tbody>tr{background:none}
310 td.hdlist1,td.hdlist2{vertical-align:top;padding:0 .625em}
311 td.hdlist1{font-weight:bold;padding-bottom:1.25em}
312 td.hdlist2{word-wrap:anywhere}
313 .literalblock+.colist,.listingblock+.colist{margin-top:-.5em}
314 .colist td:not([class]):first-child{padding:.4em .75em 0;line-height:1;vertical-align:top}
315 .colist td:not([class]):first-child img{max-width:none}
316 .colist td:not([class]):last-child{padding:.25em 0}
317 .thumb,.th{line-height:0;display:inline-block;border:4px solid #fff;box-shadow:0 0 0 1px #ddd}
318 .imageblock.left{margin:.25em .625em 1.25em 0}
319 .imageblock.right{margin:.25em 0 1.25em .625em}
320 .imageblock>.title{margin-bottom:0}
321 .imageblock.thumb,.imageblock.th{border-width:6px}
322 .imageblock.thumb>.title,.imageblock.th>.title{padding:0 .125em}
323 .image.left,.image.right{margin-top:.25em;margin-bottom:.25em;display:inline-block;line-height:0}
324 .image.left{margin-right:.625em}
325 .image.right{margin-left:.625em}
326 a.image{text-decoration:none;display:inline-block}
327 a.image object{pointer-events:none}
328 sup.footnote,sup.footnoteref{font-size:.875em;position:static;vertical-align:super}
329 sup.footnote a,sup.footnoteref a{text-decoration:none}
330 sup.footnote a:active,sup.footnoteref a:active{text-decoration:underline}
331 #footnotes{padding-top:.75em;padding-bottom:.75em;margin-bottom:.625em}
332 #footnotes hr{width:20%;min-width:6.25em;margin:-.25em 0 .75em;border-width:1px 0 0}
333 #footnotes .footnote{padding:0 .375em 0 .225em;line-height:1.3334;font-size:.875em;margin-left:1.2em;margin-bottom:.2em}
334 #footnotes .footnote a:first-of-type{font-weight:bold;text-decoration:none;margin-left:-1.05em}
335 #footnotes .footnote:last-of-type{margin-bottom:0}
336 #content #footnotes{margin-top:-.625em;margin-bottom:0;padding:.75em 0}
337 div.unbreakable{page-break-inside:avoid}
338 .big{font-size:larger}
339 .small{font-size:smaller}
340 .underline{text-decoration:underline}
341 .overline{text-decoration:overline}
342 .line-through{text-decoration:line-through}
343 .aqua{color:#00bfbf}
344 .aqua-background{background:#00fafa}
345 .black{color:#000}
346 .black-background{background:#000}
347 .blue{color:#0000bf}
348 .blue-background{background:#0000fa}
349 .fuchsia{color:#bf00bf}
350 .fuchsia-background{background:#fa00fa}
351 .gray{color:#606060}
352 .gray-background{background:#7d7d7d}
353 .green{color:#006000}
354 .green-background{background:#007d00}
355 .lime{color:#00bf00}
356 .lime-background{background:#00fa00}
357 .maroon{color:#600000}
358 .maroon-background{background:#7d0000}
359 .navy{color:#000060}
360 .navy-background{background:#00007d}
361 .olive{color:#606000}
362 .olive-background{background:#7d7d00}
363 .purple{color:#600060}
364 .purple-background{background:#7d007d}
365 .red{color:#bf0000}
366 .red-background{background:#fa0000}
367 .silver{color:#909090}
368 .silver-background{background:#bcbcbc}
369 .teal{color:#006060}
370 .teal-background{background:#007d7d}
371 .white{color:#bfbfbf}
372 .white-background{background:#fafafa}
373 .yellow{color:#bfbf00}
374 .yellow-background{background:#fafa00}
375 span.icon>.fa{cursor:default}
376 a span.icon>.fa{cursor:inherit}
377 .admonitionblock td.icon [class^="fa icon-"]{font-size:2.5em;text-shadow:1px 1px 2px rgba(0,0,0,.5);cursor:default}
378 .admonitionblock td.icon .icon-note::before{content:"\f05a";color:#19407c}
379 .admonitionblock td.icon .icon-tip::before{content:"\f0eb";text-shadow:1px 1px 2px rgba(155,155,0,.8);color:#111}
380 .admonitionblock td.icon .icon-warning::before{content:"\f071";color:#bf6900}
381 .admonitionblock td.icon .icon-caution::before{content:"\f06d";color:#bf3400}
382 .admonitionblock td.icon .icon-important::before{content:"\f06a";color:#bf0000}
383 .conum[data-value]{display:inline-block;color:#fff!important;background:rgba(0,0,0,.8);border-radius:50%;text-align:center;font-size:.75em;width:1.67em;height:1.67em;line-height:1.67em;font-family:"Open Sans","DejaVu Sans",sans-serif;font-style:normal;font-weight:bold}
384 .conum[data-value] *{color:#fff!important}
385 .conum[data-value]+b{display:none}
386 .conum[data-value]::after{content:attr(data-value)}
387 pre .conum[data-value]{position:relative;top:-.125em}
388 b.conum *{color:inherit!important}
389 .conum:not([data-value]):empty{display:none}
390 dt,th.tableblock,td.content,div.footnote{text-rendering:optimizeLegibility}
391 h1,h2,p,td.content,span.alt,summary{letter-spacing:-.01em}
392 p strong,td.content strong,div.footnote strong{letter-spacing:-.005em}
393 p,blockquote,dt,td.content,td.hdlist1,span.alt,summary{font-size:1.0625rem}
394 p{margin-bottom:1.25rem}
395 .sidebarblock p,.sidebarblock dt,.sidebarblock td.content,p.tableblock{font-size:1em}
396 .exampleblock>.content{background:#fffef7;border-color:#e0e0dc;box-shadow:0 1px 4px #e0e0dc}
397 .print-only{display:none!important}
398 @page{margin:1.25cm .75cm}
399 @media print{*{box-shadow:none!important;text-shadow:none!important}
400 html{font-size:80%}
401 a{color:inherit!important;text-decoration:underline!important}
402 a.bare,a[href^="#"],a[href^="mailto:"]{text-decoration:none!important}
403 a[href^="http:"]:not(.bare)::after,a[href^="https:"]:not(.bare)::after{content:"(" attr(href) ")";display:inline-block;font-size:.875em;padding-left:.25em}
404 abbr[title]{border-bottom:1px dotted}
405 abbr[title]::after{content:" (" attr(title) ")"}
406 pre,blockquote,tr,img,object,svg{page-break-inside:avoid}
407 thead{display:table-header-group}
408 svg{max-width:100%}
409 p,blockquote,dt,td.content{font-size:1em;orphans:3;widows:3}
410 h2,h3,#toctitle,.sidebarblock>.content>.title{page-break-after:avoid}
411 #header,#content,#footnotes,#footer{max-width:none}
412 #toc,.sidebarblock,.exampleblock>.content{background:none!important}
413 #toc{border-bottom:1px solid #dddddf!important;padding-bottom:0!important}
414 body.book #header{text-align:center}
415 body.book #header>h1:first-child{border:0!important;margin:2.5em 0 1em}
416 body.book #header .details{border:0!important;display:block;padding:0!important}
417 body.book #header .details span:first-child{margin-left:0!important}
418 body.book #header .details br{display:block}
419 body.book #header .details br+span::before{content:none!important}
420 body.book #toc{border:0!important;text-align:left!important;padding:0!important;margin:0!important}
421 body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-break-before:always}
422 .listingblock code[data-lang]::before{display:block}
423 #footer{padding:0 .9375em}
424 .hide-on-print{display:none!important}
425 .print-only{display:block!important}
426 .hide-for-print{display:none!important}
427 .show-for-print{display:inherit!important}}
428 @media amzn-kf8,print{#header>h1:first-child{margin-top:1.25rem}
429 .sect1{padding:0!important}
430 .sect1+.sect1{border:0}
431 #footer{background:none}
432 #footer-text{color:rgba(0,0,0,.6);font-size:.9em}}
433 @media amzn-kf8{#header,#content,#footnotes,#footer{padding:0}}
434 </style>
435 <style>
436 pre>code {
437 display: inline;
439 </style>
440 </head>
441 <body class="manpage">
442 <div id="header">
443 <h1>gitsubmodules(7) Manual Page</h1>
444 <h2 id="_name">NAME</h2>
445 <div class="sectionbody">
446 <p>gitsubmodules - Mounting one repository inside another</p>
447 </div>
448 </div>
449 <div id="content">
450 <div class="sect1">
451 <h2 id="_synopsis">SYNOPSIS</h2>
452 <div class="sectionbody">
453 <div class="literalblock">
454 <div class="content">
455 <pre>.gitmodules, $GIT_DIR/config</pre>
456 </div>
457 </div>
458 <div class="listingblock">
459 <div class="content">
460 <pre>git submodule
461 git &lt;command&gt; --recurse-submodules</pre>
462 </div>
463 </div>
464 </div>
465 </div>
466 <div class="sect1">
467 <h2 id="_description">DESCRIPTION</h2>
468 <div class="sectionbody">
469 <div class="paragraph">
470 <p>A submodule is a repository embedded inside another repository.
471 The submodule has its own history; the repository it is embedded
472 in is called a superproject.</p>
473 </div>
474 <div class="paragraph">
475 <p>On the filesystem, a submodule usually (but not always - see FORMS below)
476 consists of (i) a Git directory located under the <code>$GIT_DIR/modules/</code>
477 directory of its superproject, (ii) a working directory inside the
478 superproject&#8217;s working directory, and a .<code>git</code> file at the root of
479 the submodule&#8217;s working directory pointing to (i).</p>
480 </div>
481 <div class="paragraph">
482 <p>Assuming the submodule has a Git directory at <code>$GIT_DIR/modules/foo/</code>
483 and a working directory at <code>path/to/bar/</code>, the superproject tracks the
484 submodule via a <code>gitlink</code> entry in the tree at <code>path/to/bar</code> and an entry
485 in its .<code>gitmodules</code> file (see <a href="gitmodules.html">gitmodules(5)</a>) of the form
486 <code>submodule.foo.path</code> <code>=</code> <code>path/to/bar</code>.</p>
487 </div>
488 <div class="paragraph">
489 <p>The <code>gitlink</code> entry contains the object name of the commit that the
490 superproject expects the submodule&#8217;s working directory to be at.</p>
491 </div>
492 <div class="paragraph">
493 <p>The section <code>submodule.foo.</code>* in the .<code>gitmodules</code> file gives additional
494 hints to Git&#8217;s porcelain layer. For example, the <code>submodule.foo.url</code>
495 setting specifies where to obtain the submodule.</p>
496 </div>
497 <div class="paragraph">
498 <p>Submodules can be used for at least two different use cases:</p>
499 </div>
500 <div class="olist arabic">
501 <ol class="arabic">
502 <li>
503 <p>Using another project while maintaining independent history.
504 Submodules allow you to contain the working tree of another project
505 within your own working tree while keeping the history of both
506 projects separate. Also, since submodules are fixed to an arbitrary
507 version, the other project can be independently developed without
508 affecting the superproject, allowing the superproject project to
509 fix itself to new versions only when desired.</p>
510 </li>
511 <li>
512 <p>Splitting a (logically single) project into multiple
513 repositories and tying them back together. This can be used to
514 overcome current limitations of Git&#8217;s implementation to have
515 finer grained access:</p>
516 <div class="ulist">
517 <ul>
518 <li>
519 <p>Size of the Git repository:
520 In its current form Git scales up poorly for large repositories containing
521 content that is not compressed by delta computation between trees.
522 For example, you can use submodules to hold large binary assets
523 and these repositories can be shallowly cloned such that you do not
524 have a large history locally.</p>
525 </li>
526 <li>
527 <p>Transfer size:
528 In its current form Git requires the whole working tree present. It
529 does not allow partial trees to be transferred in fetch or clone.
530 If the project you work on consists of multiple repositories tied
531 together as submodules in a superproject, you can avoid fetching the
532 working trees of the repositories you are not interested in.</p>
533 </li>
534 <li>
535 <p>Access control:
536 By restricting user access to submodules, this can be used to implement
537 read/write policies for different users.</p>
538 </li>
539 </ul>
540 </div>
541 </li>
542 </ol>
543 </div>
544 </div>
545 </div>
546 <div class="sect1">
547 <h2 id="_the_configuration_of_submodules">The configuration of submodules</h2>
548 <div class="sectionbody">
549 <div class="paragraph">
550 <p>Submodule operations can be configured using the following mechanisms
551 (from highest to lowest precedence):</p>
552 </div>
553 <div class="ulist">
554 <ul>
555 <li>
556 <p>The command line for those commands that support taking submodules
557 as part of their pathspecs. Most commands have a boolean flag
558 <code>--recurse-submodules</code> which specifies whether to recurse into submodules.
559 Examples are <code>grep</code> and <code>checkout</code>.
560 Some commands take enums, such as <code>fetch</code> and <code>push</code>, where you can
561 specify how submodules are affected.</p>
562 </li>
563 <li>
564 <p>The configuration inside the submodule. This includes <code>$GIT_DIR/config</code>
565 in the submodule, but also settings in the tree such as a .<code>gitattributes</code>
566 or .<code>gitignore</code> files that specify behavior of commands inside the
567 submodule.</p>
568 <div class="paragraph">
569 <p>For example an effect from the submodule&#8217;s .<code>gitignore</code> file
570 would be observed when you run <code>git</code> <code>status</code> <code>--ignore-submodules=none</code> in
571 the superproject. This collects information from the submodule&#8217;s working
572 directory by running <code>status</code> in the submodule while paying attention
573 to the .<code>gitignore</code> file of the submodule.</p>
574 </div>
575 <div class="paragraph">
576 <p>The submodule&#8217;s <code>$GIT_DIR/config</code> file would come into play when running
577 <code>git</code> <code>push</code> <code>--recurse-submodules=check</code> in the superproject, as this would
578 check if the submodule has any changes not published to any remote. The
579 remotes are configured in the submodule as usual in the <code>$GIT_DIR/config</code>
580 file.</p>
581 </div>
582 </li>
583 <li>
584 <p>The configuration file <code>$GIT_DIR/config</code> in the superproject.
585 Git only recurses into active submodules (see "ACTIVE SUBMODULES"
586 section below).</p>
587 <div class="paragraph">
588 <p>If the submodule is not yet initialized, then the configuration
589 inside the submodule does not exist yet, so where to
590 obtain the submodule from is configured here for example.</p>
591 </div>
592 </li>
593 <li>
594 <p>The .<code>gitmodules</code> file inside the superproject. A project usually
595 uses this file to suggest defaults for the upstream collection
596 of repositories for the mapping that is required between a
597 submodule&#8217;s name and its path.</p>
598 <div class="paragraph">
599 <p>This file mainly serves as the mapping between the name and path of submodules
600 in the superproject, such that the submodule&#8217;s Git directory can be
601 located.</p>
602 </div>
603 <div class="paragraph">
604 <p>If the submodule has never been initialized, this is the only place
605 where submodule configuration is found. It serves as the last fallback
606 to specify where to obtain the submodule from.</p>
607 </div>
608 </li>
609 </ul>
610 </div>
611 </div>
612 </div>
613 <div class="sect1">
614 <h2 id="_forms">FORMS</h2>
615 <div class="sectionbody">
616 <div class="paragraph">
617 <p>Submodules can take the following forms:</p>
618 </div>
619 <div class="ulist">
620 <ul>
621 <li>
622 <p>The basic form described in DESCRIPTION with a Git directory,
623 a working directory, a <code>gitlink</code>, and a .<code>gitmodules</code> entry.</p>
624 </li>
625 <li>
626 <p>"Old-form" submodule: A working directory with an embedded
627 .<code>git</code> directory, and the tracking <code>gitlink</code> and .<code>gitmodules</code> entry in
628 the superproject. This is typically found in repositories generated
629 using older versions of Git.</p>
630 <div class="paragraph">
631 <p>It is possible to construct these old form repositories manually.</p>
632 </div>
633 <div class="paragraph">
634 <p>When deinitialized or deleted (see below), the submodule&#8217;s Git
635 directory is automatically moved to <code>$GIT_DIR/modules/</code><em>&lt;name&gt;</em><code>/</code>
636 of the superproject.</p>
637 </div>
638 </li>
639 <li>
640 <p>Deinitialized submodule: A <code>gitlink</code>, and a .<code>gitmodules</code> entry,
641 but no submodule working directory. The submodule&#8217;s Git directory
642 may be there as after deinitializing the Git directory is kept around.
643 The directory which is supposed to be the working directory is empty instead.</p>
644 <div class="paragraph">
645 <p>A submodule can be deinitialized by running <code>git</code> <code>submodule</code> <code>deinit</code>.
646 Besides emptying the working directory, this command only modifies
647 the superproject&#8217;s <code>$GIT_DIR/config</code> file, so the superproject&#8217;s history
648 is not affected. This can be undone using <code>git</code> <code>submodule</code> <code>init</code>.</p>
649 </div>
650 </li>
651 <li>
652 <p>Deleted submodule: A submodule can be deleted by running
653 <code>git</code> <code>rm</code> <em>&lt;submodule-path&gt;</em> &amp;&amp; <code>git</code> <code>commit</code>. This can be undone
654 using <code>git</code> <code>revert</code>.</p>
655 <div class="paragraph">
656 <p>The deletion removes the superproject&#8217;s tracking data, which are
657 both the <code>gitlink</code> entry and the section in the .<code>gitmodules</code> file.
658 The submodule&#8217;s working directory is removed from the file
659 system, but the Git directory is kept around as it to make it
660 possible to checkout past commits without requiring fetching
661 from another repository.</p>
662 </div>
663 <div class="paragraph">
664 <p>To completely remove a submodule, manually delete
665 <code>$GIT_DIR/modules/</code><em>&lt;name&gt;</em><code>/</code>.</p>
666 </div>
667 </li>
668 </ul>
669 </div>
670 </div>
671 </div>
672 <div class="sect1">
673 <h2 id="_active_submodules">ACTIVE SUBMODULES</h2>
674 <div class="sectionbody">
675 <div class="paragraph">
676 <p>A submodule is considered active,</p>
677 </div>
678 <div class="olist arabic">
679 <ol class="arabic">
680 <li>
681 <p>if <code>submodule.</code><em>&lt;name&gt;</em><code>.active</code> is set to <code>true</code></p>
682 <div class="paragraph">
683 <p>or</p>
684 </div>
685 </li>
686 <li>
687 <p>if the submodule&#8217;s path matches the pathspec in <code>submodule.active</code></p>
688 <div class="paragraph">
689 <p>or</p>
690 </div>
691 </li>
692 <li>
693 <p>if <code>submodule.</code><em>&lt;name&gt;</em><code>.url</code> is set.</p>
694 </li>
695 </ol>
696 </div>
697 <div class="paragraph">
698 <p>and these are evaluated in this order.</p>
699 </div>
700 <div class="paragraph">
701 <p>For example:</p>
702 </div>
703 <div class="literalblock">
704 <div class="content">
705 <pre>[submodule "foo"]
706 active = false
707 url = https://example.org/foo
708 [submodule "bar"]
709 active = true
710 url = https://example.org/bar
711 [submodule "baz"]
712 url = https://example.org/baz</pre>
713 </div>
714 </div>
715 <div class="paragraph">
716 <p>In the above config only the submodules <em>bar</em> and <em>baz</em> are active,
717 <em>bar</em> due to (1) and <em>baz</em> due to (3). <em>foo</em> is inactive because
718 (1) takes precedence over (3)</p>
719 </div>
720 <div class="paragraph">
721 <p>Note that (3) is a historical artefact and will be ignored if the
722 (1) and (2) specify that the submodule is not active. In other words,
723 if we have a <code>submodule.</code><em>&lt;name&gt;</em><code>.active</code> set to <code>false</code> or if the
724 submodule&#8217;s path is excluded in the pathspec in <code>submodule.active</code>, the
725 url doesn&#8217;t matter whether it is present or not. This is illustrated in
726 the example that follows.</p>
727 </div>
728 <div class="literalblock">
729 <div class="content">
730 <pre>[submodule "foo"]
731 active = true
732 url = https://example.org/foo
733 [submodule "bar"]
734 url = https://example.org/bar
735 [submodule "baz"]
736 url = https://example.org/baz
737 [submodule "bob"]
738 ignore = true
739 [submodule]
740 active = b*
741 active = :(exclude) baz</pre>
742 </div>
743 </div>
744 <div class="paragraph">
745 <p>In here all submodules except <em>baz</em> (foo, bar, bob) are active.
746 <em>foo</em> due to its own active flag and all the others due to the
747 submodule active pathspec, which specifies that any submodule
748 starting with <em>b</em> except <em>baz</em> are also active, regardless of the
749 presence of the .url field.</p>
750 </div>
751 </div>
752 </div>
753 <div class="sect1">
754 <h2 id="_workflow_for_a_third_party_library">Workflow for a third party library</h2>
755 <div class="sectionbody">
756 <div class="literalblock">
757 <div class="content">
758 <pre># Add a submodule
759 git submodule add &lt;URL&gt; &lt;path&gt;</pre>
760 </div>
761 </div>
762 <div class="literalblock">
763 <div class="content">
764 <pre># Occasionally update the submodule to a new version:
765 git -C &lt;path&gt; checkout &lt;new-version&gt;
766 git add &lt;path&gt;
767 git commit -m "update submodule to new version"</pre>
768 </div>
769 </div>
770 <div class="literalblock">
771 <div class="content">
772 <pre># See the list of submodules in a superproject
773 git submodule status</pre>
774 </div>
775 </div>
776 <div class="literalblock">
777 <div class="content">
778 <pre># See FORMS on removing submodules</pre>
779 </div>
780 </div>
781 </div>
782 </div>
783 <div class="sect1">
784 <h2 id="_workflow_for_an_artificially_split_repo">Workflow for an artificially split repo</h2>
785 <div class="sectionbody">
786 <div class="literalblock">
787 <div class="content">
788 <pre># Enable recursion for relevant commands, such that
789 # regular commands recurse into submodules by default
790 git config --global submodule.recurse true</pre>
791 </div>
792 </div>
793 <div class="literalblock">
794 <div class="content">
795 <pre># Unlike most other commands below, clone still needs
796 # its own recurse flag:
797 git clone --recurse &lt;URL&gt; &lt;directory&gt;
798 cd &lt;directory&gt;</pre>
799 </div>
800 </div>
801 <div class="literalblock">
802 <div class="content">
803 <pre># Get to know the code:
804 git grep foo
805 git ls-files --recurse-submodules</pre>
806 </div>
807 </div>
808 <div class="admonitionblock note">
809 <table>
810 <tr>
811 <td class="icon">
812 <div class="title">Note</div>
813 </td>
814 <td class="content">
815 <code>git</code> <code>ls-files</code> also requires its own <code>--recurse-submodules</code> flag.
816 </td>
817 </tr>
818 </table>
819 </div>
820 <div class="literalblock">
821 <div class="content">
822 <pre># Get new code
823 git fetch
824 git pull --rebase</pre>
825 </div>
826 </div>
827 <div class="literalblock">
828 <div class="content">
829 <pre># Change worktree
830 git checkout
831 git reset</pre>
832 </div>
833 </div>
834 </div>
835 </div>
836 <div class="sect1">
837 <h2 id="_implementation_details">Implementation details</h2>
838 <div class="sectionbody">
839 <div class="paragraph">
840 <p>When cloning or pulling a repository containing submodules the submodules
841 will not be checked out by default; you can instruct <code>clone</code> to recurse
842 into submodules. The <code>init</code> and <code>update</code> subcommands of <code>git</code> <code>submodule</code>
843 will maintain submodules checked out and at an appropriate revision in
844 your working tree. Alternatively you can set <code>submodule.recurse</code> to have
845 <code>checkout</code> recurse into submodules (note that <code>submodule.recurse</code> also
846 affects other Git commands, see <a href="git-config.html">git-config(1)</a> for a complete list).</p>
847 </div>
848 </div>
849 </div>
850 <div class="sect1">
851 <h2 id="_see_also">SEE ALSO</h2>
852 <div class="sectionbody">
853 <div class="paragraph">
854 <p><a href="git-submodule.html">git-submodule(1)</a>, <a href="gitmodules.html">gitmodules(5)</a>.</p>
855 </div>
856 </div>
857 </div>
858 <div class="sect1">
859 <h2 id="_git">GIT</h2>
860 <div class="sectionbody">
861 <div class="paragraph">
862 <p>Part of the <a href="git.html">git(1)</a> suite</p>
863 </div>
864 </div>
865 </div>
866 </div>
867 <div id="footer">
868 <div id="footer-text">
869 Last updated 2024-02-08 15:45:59 -0800
870 </div>
871 </div>
872 </body>
873 </html>