blob: 55dd8cbab4c886ee67d5e1a613bd02ef37e6c2c3 [file] [log] [blame]
Junio C Hamanob96f40a2024-08-01 00:57:251<!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>gitrepository-layout(5)</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"; */
14html{font-family:sans-serif;-webkit-text-size-adjust:100%}
15a{background:none}
16a:focus{outline:thin dotted}
17a:active,a:hover{outline:0}
18h1{font-size:2em;margin:.67em 0}
19b,strong{font-weight:bold}
20abbr{font-size:.9em}
21abbr[title]{cursor:help;border-bottom:1px dotted #dddddf;text-decoration:none}
22dfn{font-style:italic}
23hr{height:0}
24mark{background:#ff0;color:#000}
25code,kbd,pre,samp{font-family:monospace;font-size:1em}
26pre{white-space:pre-wrap}
27q{quotes:"\201C" "\201D" "\2018" "\2019"}
28small{font-size:80%}
29sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}
30sup{top:-.5em}
31sub{bottom:-.25em}
32img{border:0}
33svg:not(:root){overflow:hidden}
34figure{margin:0}
35audio,video{display:inline-block}
36audio:not([controls]){display:none;height:0}
37fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}
38legend{border:0;padding:0}
39button,input,select,textarea{font-family:inherit;font-size:100%;margin:0}
40button,input{line-height:normal}
41button,select{text-transform:none}
42button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}
43button[disabled],html input[disabled]{cursor:default}
44input[type=checkbox],input[type=radio]{padding:0}
45button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}
46textarea{overflow:auto;vertical-align:top}
47table{border-collapse:collapse;border-spacing:0}
48*,::before,::after{box-sizing:border-box}
49html,body{font-size:100%}
50body{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}
51a:hover{cursor:pointer}
52img,object,embed{max-width:100%;height:auto}
53object,embed{height:100%}
54img{-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}
62img,object,svg{display:inline-block;vertical-align:middle}
63textarea{height:auto;min-height:50px}
64select{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}
66div,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}
67a{color:#2156a5;text-decoration:underline;line-height:inherit}
68a:hover,a:focus{color:#1d4b8f}
69a img{border:0}
70p{line-height:1.6;margin-bottom:1.25em;text-rendering:optimizeLegibility}
71p aside{font-size:.875em;line-height:1.35;font-style:italic}
72h1,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}
73h1 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}
74h1{font-size:2.125em}
75h2{font-size:1.6875em}
76h3,#toctitle,.sidebarblock>.content>.title{font-size:1.375em}
77h4,h5{font-size:1.125em}
78h6{font-size:1em}
79hr{border:solid #dddddf;border-width:1px 0 0;clear:both;margin:1.25em 0 1.1875em}
80em,i{font-style:italic;line-height:inherit}
81strong,b{font-weight:bold;line-height:inherit}
82small{font-size:60%;line-height:inherit}
83code{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;font-weight:400;color:rgba(0,0,0,.9)}
84ul,ol,dl{line-height:1.6;margin-bottom:1.25em;list-style-position:outside;font-family:inherit}
85ul,ol{margin-left:1.5em}
86ul li ul,ul li ol{margin-left:1.25em;margin-bottom:0}
87ul.circle{list-style-type:circle}
88ul.disc{list-style-type:disc}
89ul.square{list-style-type:square}
90ul.circle ul:not([class]),ul.disc ul:not([class]),ul.square ul:not([class]){list-style:inherit}
91ol li ul,ol li ol{margin-left:1.25em;margin-bottom:0}
92dl dt{margin-bottom:.3125em;font-weight:bold}
93dl dd{margin-bottom:1.25em}
94blockquote{margin:0 0 1.25em;padding:.5625em 1.25em 0 1.1875em;border-left:1px solid #ddd}
95blockquote,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}
97h1{font-size:2.75em}
98h2{font-size:2.3125em}
99h3,#toctitle,.sidebarblock>.content>.title{font-size:1.6875em}
100h4{font-size:1.4375em}}
101table{background:#fff;margin-bottom:1.25em;border:1px solid #dedede;word-wrap:normal}
102table thead,table tfoot{background:#f7f8f7}
103table 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}
104table tr th,table tr td{padding:.5625em .625em;font-size:inherit;color:rgba(0,0,0,.8)}
105table tr.even,table tr.alt{background:#f8f8f7}
106table thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{line-height:1.6}
107h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2;word-spacing:-.05em}
108h1 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}
117pre{color:rgba(0,0,0,.9);font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;line-height:1.45;text-rendering:optimizeSpeed}
118pre code,pre pre{color:inherit;font-size:inherit;line-height:inherit}
119pre>code{display:block}
120pre.nowrap,pre.nowrap pre{white-space:pre;word-wrap:normal}
121em em{font-style:normal}
122strong strong{font-weight:400}
123.keyseq{color:rgba(51,51,51,.8)}
124kbd{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}
132b.button::before,b.button::after{position:relative;top:-1px;font-weight:400}
133b.button::before{content:"[";padding:0 3px 0 2px}
134b.button::after{content:"]";padding:0 2px 0 3px}
135p 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}
164body.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}
170body.toc2.toc-right{padding-left:0;padding-right:15em}
171body.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}
177body.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}
194details,.audioblock,.imageblock,.literalblock,.listingblock,.stemblock,.videoblock{margin-bottom:1.25em}
195details{margin-left:1.25rem}
196details>summary{cursor:pointer;display:block;position:relative;line-height:1.6;margin-bottom:.625rem;outline:none;-webkit-tap-highlight-color:transparent}
197details>summary::-webkit-details-marker{display:none}
198details>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%)}
199details[open]>summary::before{border:solid transparent;border-top:solid;border-width:.5em .3em 0;transform:translateY(15%)}
200details>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}
202table.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}
229pre.prettyprint .linenums{line-height:1.45;margin-left:2em}
230pre.prettyprint li{background:none;list-style-type:inherit;padding-left:0}
231pre.prettyprint li code[data-lang]::before{opacity:1}
232pre.prettyprint li:not(:first-child) code[data-lang]::before{display:none}
233table.linenotable{border-collapse:separate;border:0;margin-bottom:0;background:none}
234table.linenotable td[class]{color:inherit;vertical-align:top;padding:0;line-height:inherit;white-space:normal}
235table.linenotable td.code{padding-left:.75em}
236table.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}
237pre.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}
260p.tableblock:last-child{margin-bottom:0}
261td.tableblock>.content{margin-bottom:1.25em;word-wrap:anywhere}
262td.tableblock>.content>:last-child{margin-bottom:-1.25em}
263table.tableblock,th.tableblock,td.tableblock{border:0 solid #dedede}
264table.grid-all>*>tr>*{border-width:1px}
265table.grid-cols>*>tr>*{border-width:0 1px}
266table.grid-rows>*>tr>*{border-width:1px 0}
267table.frame-all{border-width:1px}
268table.frame-ends{border-width:1px 0}
269table.frame-sides{border-width:0 1px}
270table.frame-none>colgroup+*>:first-child>*,table.frame-sides>colgroup+*>:first-child>*{border-top-width:0}
271table.frame-none>:last-child>:last-child>*,table.frame-sides>:last-child>:last-child>*{border-bottom-width:0}
272table.frame-none>*>tr>:first-child,table.frame-ends>*>tr>:first-child{border-left-width:0}
273table.frame-none>*>tr>:last-child,table.frame-ends>*>tr>:last-child{border-right-width:0}
274table.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}
275th.halign-left,td.halign-left{text-align:left}
276th.halign-right,td.halign-right{text-align:right}
277th.halign-center,td.halign-center{text-align:center}
278th.valign-top,td.valign-top{vertical-align:top}
279th.valign-bottom,td.valign-bottom{vertical-align:bottom}
280th.valign-middle,td.valign-middle{vertical-align:middle}
281table thead th,table tfoot th{font-weight:bold}
282tbody tr th{background:#f7f8f7}
283tbody tr th,tbody tr th p,tfoot tr th,tfoot tr th p{color:rgba(0,0,0,.8);font-weight:bold}
284p.tableblock>code:only-child{background:none;padding:0}
285p.tableblock{font-size:1em}
286ol{margin-left:1.75em}
287ul li ol{margin-left:1.5em}
288dl dd{margin-left:1.125em}
289dl dd:last-child,dl dd:last-child>:last-child{margin-bottom:0}
290li p,ul dd,ol dd,.olist .olist,.ulist .ulist,.ulist .olist,.olist .ulist{margin-bottom:.625em}
291ul.checklist,ul.none,ol.none,ul.no-bullet,ol.no-bullet,ol.unnumbered,ul.unstyled,ol.unstyled{list-style-type:none}
292ul.no-bullet,ol.no-bullet,ol.unnumbered{margin-left:.625em}
293ul.unstyled,ol.unstyled{margin-left:0}
294li>p:empty:only-child::before{content:"";display:inline-block}
295ul.checklist>li>p:first-child{margin-left:-1em}
296ul.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}
297ul.checklist>li>p:first-child>input[type=checkbox]:first-child{margin-right:.25em}
298ul.inline{display:flex;flex-flow:row wrap;list-style:none;margin:0 0 .625em -1.25em}
299ul.inline>li{margin-left:1.25em}
300.unstyled dl dt{font-weight:400;font-style:normal}
301ol.arabic{list-style-type:decimal}
302ol.decimal{list-style-type:decimal-leading-zero}
303ol.loweralpha{list-style-type:lower-alpha}
304ol.upperalpha{list-style-type:upper-alpha}
305ol.lowerroman{list-style-type:lower-roman}
306ol.upperroman{list-style-type:upper-roman}
307ol.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}
310td.hdlist1,td.hdlist2{vertical-align:top;padding:0 .625em}
311td.hdlist1{font-weight:bold;padding-bottom:1.25em}
312td.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}
326a.image{text-decoration:none;display:inline-block}
327a.image object{pointer-events:none}
328sup.footnote,sup.footnoteref{font-size:.875em;position:static;vertical-align:super}
329sup.footnote a,sup.footnoteref a{text-decoration:none}
330sup.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}
337div.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}
375span.icon>.fa{cursor:default}
376a 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)}
387pre .conum[data-value]{position:relative;top:-.125em}
388b.conum *{color:inherit!important}
389.conum:not([data-value]):empty{display:none}
390dt,th.tableblock,td.content,div.footnote{text-rendering:optimizeLegibility}
391h1,h2,p,td.content,span.alt,summary{letter-spacing:-.01em}
392p strong,td.content strong,div.footnote strong{letter-spacing:-.005em}
393p,blockquote,dt,td.content,td.hdlist1,span.alt,summary{font-size:1.0625rem}
394p{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}
400html{font-size:80%}
401a{color:inherit!important;text-decoration:underline!important}
402a.bare,a[href^="#"],a[href^="mailto:"]{text-decoration:none!important}
403a[href^="http:"]:not(.bare)::after,a[href^="https:"]:not(.bare)::after{content:"(" attr(href) ")";display:inline-block;font-size:.875em;padding-left:.25em}
404abbr[title]{border-bottom:1px dotted}
405abbr[title]::after{content:" (" attr(title) ")"}
406pre,blockquote,tr,img,object,svg{page-break-inside:avoid}
407thead{display:table-header-group}
408svg{max-width:100%}
409p,blockquote,dt,td.content{font-size:1em;orphans:3;widows:3}
410h2,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}
414body.book #header{text-align:center}
415body.book #header>h1:first-child{border:0!important;margin:2.5em 0 1em}
416body.book #header .details{border:0!important;display:block;padding:0!important}
417body.book #header .details span:first-child{margin-left:0!important}
418body.book #header .details br{display:block}
419body.book #header .details br+span::before{content:none!important}
420body.book #toc{border:0!important;text-align:left!important;padding:0!important;margin:0!important}
421body.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>
436pre>code {
437 display: inline;
438}
439</style>
440</head>
441<body class="manpage">
442<div id="header">
443<h1>gitrepository-layout(5) Manual Page</h1>
444<h2 id="_name">NAME</h2>
445<div class="sectionbody">
446<p>gitrepository-layout - Git Repository Layout</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="paragraph">
454<p>$GIT_DIR/*</p>
455</div>
456</div>
457</div>
458<div class="sect1">
459<h2 id="_description">DESCRIPTION</h2>
460<div class="sectionbody">
461<div class="paragraph">
462<p>A Git repository comes in two different flavours:</p>
463</div>
464<div class="ulist">
465<ul>
466<li>
Junio C Hamanodc392382024-10-11 18:57:29467<p>a .<code>git</code> directory at the root of the working tree;</p>
Junio C Hamanob96f40a2024-08-01 00:57:25468</li>
469<li>
Junio C Hamanodc392382024-10-11 18:57:29470<p>a <em>&lt;project&gt;</em><code>.git</code> directory that is a <em>bare</em> repository
Junio C Hamanob96f40a2024-08-01 00:57:25471(i.e. without its own working tree), that is typically used for
472exchanging histories with others by pushing into it and fetching
473from it.</p>
474</li>
475</ul>
476</div>
477<div class="paragraph">
Junio C Hamanodc392382024-10-11 18:57:29478<p><strong>Note</strong>: Also you can have a plain text file .<code>git</code> at the root of
479your working tree, containing <code>gitdir:</code> <em>&lt;path&gt;</em> to point at the real
Junio C Hamanob96f40a2024-08-01 00:57:25480directory that has the repository.
481This mechanism is called a <em>gitfile</em> and is usually managed via the
Junio C Hamanodc392382024-10-11 18:57:29482<code>git</code> <code>submodule</code> and <code>git</code> <code>worktree</code> commands. It is often used for
Junio C Hamanob96f40a2024-08-01 00:57:25483a working tree of a submodule checkout, to allow you in the
Junio C Hamanodc392382024-10-11 18:57:29484containing superproject to <code>git</code> <code>checkout</code> a branch that does not
Junio C Hamanob96f40a2024-08-01 00:57:25485have the submodule. The <code>checkout</code> has to remove the entire
486submodule working tree, without losing the submodule repository.</p>
487</div>
488<div class="paragraph">
489<p>These things may exist in a Git repository.</p>
490</div>
491<div class="dlist">
492<dl>
493<dt class="hdlist1">objects</dt>
494<dd>
495<p>Object store associated with this repository. Usually
496an object store is self sufficient (i.e. all the objects
497that are referred to by an object found in it are also
498found in it), but there are a few ways to violate it.</p>
499<div class="olist arabic">
500<ol class="arabic">
501<li>
502<p>You could have an incomplete but locally usable repository
503by creating a shallow clone. See <a href="git-clone.html">git-clone(1)</a>.</p>
504</li>
505<li>
506<p>You could be using the <code>objects/info/alternates</code> or
507<code>$GIT_ALTERNATE_OBJECT_DIRECTORIES</code> mechanisms to <em>borrow</em>
508objects from other object stores. A repository with this kind
509of incomplete object store is not suitable to be published for
510use with dumb transports but otherwise is OK as long as
511<code>objects/info/alternates</code> points at the object stores it
512borrows from.</p>
513<div class="paragraph">
514<p>This directory is ignored if $GIT_COMMON_DIR is set and
515"$GIT_COMMON_DIR/objects" will be used instead.</p>
516</div>
517</li>
518</ol>
519</div>
520</dd>
521<dt class="hdlist1">objects/[0-9a-f][0-9a-f]</dt>
522<dd>
523<p>A newly created object is stored in its own file.
524The objects are splayed over 256 subdirectories using
525the first two characters of the sha1 object name to
526keep the number of directory entries in <code>objects</code>
527itself to a manageable number. Objects found
528here are often called <em>unpacked</em> (or <em>loose</em>) objects.</p>
529</dd>
530<dt class="hdlist1">objects/pack</dt>
531<dd>
532<p>Packs (files that store many objects in compressed form,
533along with index files to allow them to be randomly
534accessed) are found in this directory.</p>
535</dd>
536<dt class="hdlist1">objects/info</dt>
537<dd>
538<p>Additional information about the object store is
539recorded in this directory.</p>
540</dd>
541<dt class="hdlist1">objects/info/packs</dt>
542<dd>
543<p>This file is to help dumb transports discover what packs
544are available in this object store. Whenever a pack is
Junio C Hamanodc392382024-10-11 18:57:29545added or removed, <code>git</code> <code>update-server-info</code> should be run
Junio C Hamanob96f40a2024-08-01 00:57:25546to keep this file up to date if the repository is
547published for dumb transports. <em>git repack</em> does this
548by default.</p>
549</dd>
550<dt class="hdlist1">objects/info/alternates</dt>
551<dd>
552<p>This file records paths to alternate object stores that
553this object store borrows objects from, one pathname per
554line. Note that not only native Git tools use it locally,
555but the HTTP fetcher also tries to use it remotely; this
556will usually work if you have relative paths (relative
557to the object database, not to the repository!) in your
558alternates file, but it will not work if you use absolute
559paths unless the absolute path in filesystem and web URL
560is the same. See also <code>objects/info/http-alternates</code>.</p>
561</dd>
562<dt class="hdlist1">objects/info/http-alternates</dt>
563<dd>
564<p>This file records URLs to alternate object stores that
565this object store borrows objects from, to be used when
566the repository is fetched over HTTP.</p>
567</dd>
568<dt class="hdlist1">refs</dt>
569<dd>
570<p>References are stored in subdirectories of this
571directory. The <em>git prune</em> command knows to preserve
572objects reachable from refs found in this directory and
573its subdirectories.
574This directory is ignored (except refs/bisect,
575refs/rewritten and refs/worktree) if $GIT_COMMON_DIR is
576set and "$GIT_COMMON_DIR/refs" will be used instead.</p>
577</dd>
578<dt class="hdlist1">refs/heads/<code>name</code></dt>
579<dd>
580<p>records tip-of-the-tree commit objects of branch <code>name</code></p>
581</dd>
582<dt class="hdlist1">refs/tags/<code>name</code></dt>
583<dd>
584<p>records any object name (not necessarily a commit
585object, or a tag object that points at a commit object).</p>
586</dd>
587<dt class="hdlist1">refs/remotes/<code>name</code></dt>
588<dd>
589<p>records tip-of-the-tree commit objects of branches copied
590from a remote repository.</p>
591</dd>
Junio C Hamanodc392382024-10-11 18:57:29592<dt class="hdlist1">refs/replace/<em>&lt;obj-sha1&gt;</em></dt>
Junio C Hamanob96f40a2024-08-01 00:57:25593<dd>
Junio C Hamanodc392382024-10-11 18:57:29594<p>records the SHA-1 of the object that replaces <em>&lt;obj-sha1&gt;</em>.
Junio C Hamanob96f40a2024-08-01 00:57:25595This is similar to info/grafts and is internally used and
596maintained by <a href="git-replace.html">git-replace(1)</a>. Such refs can be exchanged
597between repositories while grafts are not.</p>
598</dd>
599<dt class="hdlist1">packed-refs</dt>
600<dd>
601<p>records the same information as refs/heads/, refs/tags/,
602and friends record in a more efficient way. See
603<a href="git-pack-refs.html">git-pack-refs(1)</a>. This file is ignored if $GIT_COMMON_DIR
604is set and "$GIT_COMMON_DIR/packed-refs" will be used instead.</p>
605</dd>
606<dt class="hdlist1">HEAD</dt>
607<dd>
608<p>A symref (see glossary) to the <code>refs/heads/</code> namespace
609describing the currently active branch. It does not mean
610much if the repository is not associated with any working tree
611(i.e. a <em>bare</em> repository), but a valid Git repository
612<strong>must</strong> have the HEAD file; some porcelains may use it to
613guess the designated "default" branch of the repository
614(usually <em>master</em>). It is legal if the named branch
615<em>name</em> does not (yet) exist. In some legacy setups, it is
616a symbolic link instead of a symref that points at the current
617branch.</p>
618<div class="paragraph">
619<p>HEAD can also record a specific commit directly, instead of
620being a symref to point at the current branch. Such a state
621is often called <em>detached HEAD.</em> See <a href="git-checkout.html">git-checkout(1)</a>
622for details.</p>
623</div>
624</dd>
625<dt class="hdlist1">config</dt>
626<dd>
627<p>Repository specific configuration file. This file is ignored
628if $GIT_COMMON_DIR is set and "$GIT_COMMON_DIR/config" will be
629used instead.</p>
630</dd>
631<dt class="hdlist1">config.worktree</dt>
632<dd>
633<p>Working directory specific configuration file for the main
634working directory in multiple working directory setup (see
635<a href="git-worktree.html">git-worktree(1)</a>).</p>
636</dd>
637<dt class="hdlist1">branches</dt>
638<dd>
639<p>A slightly deprecated way to store shorthands to be used
640to specify a URL to <em>git fetch</em>, <em>git pull</em> and <em>git push</em>.
Junio C Hamanodc392382024-10-11 18:57:29641A file can be stored as <code>branches/</code><em>&lt;name&gt;</em> and then
Junio C Hamanob96f40a2024-08-01 00:57:25642<em>name</em> can be given to these commands in place of
643<em>repository</em> argument. See the REMOTES section in
644<a href="git-fetch.html">git-fetch(1)</a> for details. This mechanism is legacy
645and not likely to be found in modern repositories. This
646directory is ignored if $GIT_COMMON_DIR is set and
647"$GIT_COMMON_DIR/branches" will be used instead.</p>
648</dd>
649<dt class="hdlist1">hooks</dt>
650<dd>
651<p>Hooks are customization scripts used by various Git
652commands. A handful of sample hooks are installed when
653<em>git init</em> is run, but all of them are disabled by
Junio C Hamanodc392382024-10-11 18:57:29654default. To enable, the .<code>sample</code> suffix has to be
Junio C Hamanob96f40a2024-08-01 00:57:25655removed from the filename by renaming.
656Read <a href="githooks.html">githooks(5)</a> for more details about
657each hook. This directory is ignored if $GIT_COMMON_DIR is set
658and "$GIT_COMMON_DIR/hooks" will be used instead.</p>
659</dd>
660<dt class="hdlist1">common</dt>
661<dd>
662<p>When multiple working trees are used, most of files in
663$GIT_DIR are per-worktree with a few known exceptions. All
664files under <em>common</em> however will be shared between all
665working trees.</p>
666</dd>
667<dt class="hdlist1">index</dt>
668<dd>
669<p>The current index file for the repository. It is
670usually not found in a bare repository.</p>
671</dd>
672<dt class="hdlist1">sharedindex.&lt;SHA-1&gt;</dt>
673<dd>
674<p>The shared index part, to be referenced by $GIT_DIR/index and
675other temporary index files. Only valid in split index mode.</p>
676</dd>
677<dt class="hdlist1">info</dt>
678<dd>
679<p>Additional information about the repository is recorded
680in this directory. This directory is ignored if $GIT_COMMON_DIR
681is set and "$GIT_COMMON_DIR/info" will be used instead.</p>
682</dd>
683<dt class="hdlist1">info/refs</dt>
684<dd>
685<p>This file helps dumb transports discover what refs are
686available in this repository. If the repository is
687published for dumb transports, this file should be
688regenerated by <em>git update-server-info</em> every time a tag
689or branch is created or modified. This is normally done
690from the <code>hooks/update</code> hook, which is run by the
691<em>git-receive-pack</em> command when you <em>git push</em> into the
692repository.</p>
693</dd>
694<dt class="hdlist1">info/grafts</dt>
695<dd>
696<p>This file records fake commit ancestry information, to
697pretend the set of parents a commit has is different
698from how the commit was actually created. One record
699per line describes a commit and its fake parents by
700listing their 40-byte hexadecimal object names separated
701by a space and terminated by a newline.</p>
702<div class="paragraph">
703<p>Note that the grafts mechanism is outdated and can lead to problems
704transferring objects between repositories; see <a href="git-replace.html">git-replace(1)</a>
705for a more flexible and robust system to do the same thing.</p>
706</div>
707</dd>
708<dt class="hdlist1">info/exclude</dt>
709<dd>
710<p>This file, by convention among Porcelains, stores the
Junio C Hamanodc392382024-10-11 18:57:29711exclude pattern list. .<code>gitignore</code> is the per-directory
Junio C Hamanob96f40a2024-08-01 00:57:25712ignore file. <em>git status</em>, <em>git add</em>, <em>git rm</em> and
713<em>git clean</em> look at it but the core Git commands do not look
714at it. See also: <a href="gitignore.html">gitignore(5)</a>.</p>
715</dd>
716<dt class="hdlist1">info/attributes</dt>
717<dd>
718<p>Defines which attributes to assign to a path, similar to per-directory
Junio C Hamanodc392382024-10-11 18:57:29719.<code>gitattributes</code> files. See also: <a href="gitattributes.html">gitattributes(5)</a>.</p>
Junio C Hamanob96f40a2024-08-01 00:57:25720</dd>
721<dt class="hdlist1">info/sparse-checkout</dt>
722<dd>
723<p>This file stores sparse checkout patterns.
724See also: <a href="git-read-tree.html">git-read-tree(1)</a>.</p>
725</dd>
726<dt class="hdlist1">remotes</dt>
727<dd>
728<p>Stores shorthands for URL and default refnames for use
729when interacting with remote repositories via <em>git fetch</em>,
730<em>git pull</em> and <em>git push</em> commands. See the REMOTES section
731in <a href="git-fetch.html">git-fetch(1)</a> for details. This mechanism is legacy
732and not likely to be found in modern repositories. This
733directory is ignored if $GIT_COMMON_DIR is set and
734"$GIT_COMMON_DIR/remotes" will be used instead.</p>
735</dd>
736<dt class="hdlist1">logs</dt>
737<dd>
738<p>Records of changes made to refs are stored in this directory.
739See <a href="git-update-ref.html">git-update-ref(1)</a> for more information. This
740directory is ignored (except logs/HEAD) if $GIT_COMMON_DIR is
741set and "$GIT_COMMON_DIR/logs" will be used instead.</p>
742</dd>
743<dt class="hdlist1">logs/refs/heads/<code>name</code></dt>
744<dd>
745<p>Records all changes made to the branch tip named <code>name</code>.</p>
746</dd>
747<dt class="hdlist1">logs/refs/tags/<code>name</code></dt>
748<dd>
749<p>Records all changes made to the tag named <code>name</code>.</p>
750</dd>
751<dt class="hdlist1">shallow</dt>
752<dd>
753<p>This is similar to <code>info/grafts</code> but is internally used
754and maintained by shallow clone mechanism. See <code>--depth</code>
755option to <a href="git-clone.html">git-clone(1)</a> and <a href="git-fetch.html">git-fetch(1)</a>. This
756file is ignored if $GIT_COMMON_DIR is set and
757"$GIT_COMMON_DIR/shallow" will be used instead.</p>
758</dd>
759<dt class="hdlist1">commondir</dt>
760<dd>
761<p>If this file exists, $GIT_COMMON_DIR (see <a href="git.html">git(1)</a>) will
762be set to the path specified in this file if it is not
763explicitly set. If the specified path is relative, it is
764relative to $GIT_DIR. The repository with commondir is
765incomplete without the repository pointed by "commondir".</p>
766</dd>
767<dt class="hdlist1">modules</dt>
768<dd>
769<p>Contains the git-repositories of the submodules.</p>
770</dd>
771<dt class="hdlist1">worktrees</dt>
772<dd>
773<p>Contains administrative data for linked
774working trees. Each subdirectory contains the working tree-related
775part of a linked working tree. This directory is ignored if
776$GIT_COMMON_DIR is set, in which case
777"$GIT_COMMON_DIR/worktrees" will be used instead.</p>
778</dd>
779<dt class="hdlist1">worktrees/&lt;id&gt;/gitdir</dt>
780<dd>
781<p>A text file containing the absolute path back to the .git file
782that points to here. This is used to check if the linked
783repository has been manually removed and there is no need to
784keep this directory any more. The mtime of this file should be
785updated every time the linked repository is accessed.</p>
786</dd>
787<dt class="hdlist1">worktrees/&lt;id&gt;/locked</dt>
788<dd>
789<p>If this file exists, the linked working tree may be on a
790portable device and not available. The presence of this file
Junio C Hamanodc392382024-10-11 18:57:29791prevents <code>worktrees/</code><em>&lt;id&gt;</em> from being pruned either automatically
792or manually by <code>git</code> <code>worktree</code> <code>prune</code>. The file may contain a string
Junio C Hamanob96f40a2024-08-01 00:57:25793explaining why the repository is locked.</p>
794</dd>
795<dt class="hdlist1">worktrees/&lt;id&gt;/config.worktree</dt>
796<dd>
797<p>Working directory specific configuration file.</p>
798</dd>
799</dl>
800</div>
801</div>
802</div>
803<div class="sect1">
804<h2 id="_git_repository_format_versions">Git Repository Format Versions</h2>
805<div class="sectionbody">
806<div class="paragraph">
807<p>Every git repository is marked with a numeric version in the
808<code>core.repositoryformatversion</code> key of its <code>config</code> file. This version
809specifies the rules for operating on the on-disk repository data. An
810implementation of git which does not understand a particular version
811advertised by an on-disk repository MUST NOT operate on that repository;
812doing so risks not only producing wrong results, but actually losing
813data.</p>
814</div>
815<div class="paragraph">
816<p>Because of this rule, version bumps should be kept to an absolute
817minimum. Instead, we generally prefer these strategies:</p>
818</div>
819<div class="ulist">
820<ul>
821<li>
822<p>bumping format version numbers of individual data files (e.g.,
823index, packfiles, etc). This restricts the incompatibilities only to
824those files.</p>
825</li>
826<li>
827<p>introducing new data that gracefully degrades when used by older
828clients (e.g., pack bitmap files are ignored by older clients, which
829simply do not take advantage of the optimization they provide).</p>
830</li>
831</ul>
832</div>
833<div class="paragraph">
834<p>A whole-repository format version bump should only be part of a change
835that cannot be independently versioned. For instance, if one were to
836change the reachability rules for objects, or the rules for locking
837refs, that would require a bump of the repository format version.</p>
838</div>
839<div class="paragraph">
840<p>Note that this applies only to accessing the repository&#8217;s disk contents
841directly. An older client which understands only format <code>0</code> may still
842connect via <code>git://</code> to a repository using format <code>1</code>, as long as the
843server process understands format <code>1</code>.</p>
844</div>
845<div class="paragraph">
846<p>The preferred strategy for rolling out a version bump (whether whole
847repository or for a single file) is to teach git to read the new format,
848and allow writing the new format with a config switch or command line
849option (for experimentation or for those who do not care about backwards
850compatibility with older gits). Then after a long period to allow the
851reading capability to become common, we may switch to writing the new
852format by default.</p>
853</div>
854<div class="paragraph">
855<p>The currently defined format versions are:</p>
856</div>
857<div class="sect2">
858<h3 id="_version_0">Version <code>0</code></h3>
859<div class="paragraph">
860<p>This is the format defined by the initial version of git, including but
861not limited to the format of the repository directory, the repository
862configuration file, and the object and ref storage. Specifying the
863complete behavior of git is beyond the scope of this document.</p>
864</div>
865</div>
866<div class="sect2">
867<h3 id="_version_1">Version <code>1</code></h3>
868<div class="paragraph">
869<p>This format is identical to version <code>0</code>, with the following exceptions:</p>
870</div>
871<div class="olist arabic">
872<ol class="arabic">
873<li>
874<p>When reading the <code>core.repositoryformatversion</code> variable, a git
875implementation which supports version 1 MUST also read any
876configuration keys found in the <code>extensions</code> section of the
877configuration file.</p>
878</li>
879<li>
Junio C Hamanodc392382024-10-11 18:57:29880<p>If a version-1 repository specifies any <code>extensions.</code>* keys that
Junio C Hamanob96f40a2024-08-01 00:57:25881the running git has not implemented, the operation MUST NOT
882proceed. Similarly, if the value of any known key is not understood
883by the implementation, the operation MUST NOT proceed.</p>
884</li>
885</ol>
886</div>
887<div class="paragraph">
888<p>Note that if no extensions are specified in the config file, then
889<code>core.repositoryformatversion</code> SHOULD be set to <code>0</code> (setting it to <code>1</code>
890provides no benefit, and makes the repository incompatible with older
891implementations of git).</p>
892</div>
893<div class="paragraph">
894<p>This document will serve as the master list for extensions. Any
895implementation wishing to define a new extension should make a note of
896it here, in order to claim the name.</p>
897</div>
898<div class="paragraph">
899<p>The defined extensions are:</p>
900</div>
901<div class="sect3">
902<h4 id="_noop"><code>noop</code></h4>
903<div class="paragraph">
904<p>This extension does not change git&#8217;s behavior at all. It is useful only
905for testing format-1 compatibility.</p>
906</div>
907</div>
908<div class="sect3">
909<h4 id="_preciousobjects"><code>preciousObjects</code></h4>
910<div class="paragraph">
911<p>When the config key <code>extensions.preciousObjects</code> is set to <code>true</code>,
912objects in the repository MUST NOT be deleted (e.g., by <code>git-prune</code> or
Junio C Hamanodc392382024-10-11 18:57:29913<code>git</code> <code>repack</code> <code>-d</code>).</p>
Junio C Hamanob96f40a2024-08-01 00:57:25914</div>
915</div>
916<div class="sect3">
917<h4 id="_partialclone"><code>partialClone</code></h4>
918<div class="paragraph">
919<p>When the config key <code>extensions.partialClone</code> is set, it indicates
920that the repo was created with a partial clone (or later performed
921a partial fetch) and that the remote may have omitted sending
922certain unwanted objects. Such a remote is called a "promisor remote"
923and it promises that all such omitted objects can be fetched from it
924in the future.</p>
925</div>
926<div class="paragraph">
927<p>The value of this key is the name of the promisor remote.</p>
928</div>
929</div>
930<div class="sect3">
931<h4 id="_worktreeconfig"><code>worktreeConfig</code></h4>
932<div class="paragraph">
933<p>If set, by default "git config" reads from both "config" and
934"config.worktree" files from GIT_DIR in that order. In
935multiple working directory mode, "config" file is shared while
936"config.worktree" is per-working directory (i.e., it&#8217;s in
937GIT_COMMON_DIR/worktrees/&lt;id&gt;/config.worktree)</p>
938</div>
939</div>
940<div class="sect3">
941<h4 id="_refstorage"><code>refStorage</code></h4>
942<div class="paragraph">
943<p>Specifies the file format for the ref database. The valid values are
944<code>files</code> (loose references with a packed-refs file) and <code>reftable</code> (see
945Documentation/technical/reftable.txt).</p>
946</div>
947</div>
948</div>
949</div>
950</div>
951<div class="sect1">
952<h2 id="_see_also">SEE ALSO</h2>
953<div class="sectionbody">
954<div class="paragraph">
955<p><a href="git-init.html">git-init(1)</a>,
956<a href="git-clone.html">git-clone(1)</a>,
957<a href="git-fetch.html">git-fetch(1)</a>,
958<a href="git-pack-refs.html">git-pack-refs(1)</a>,
959<a href="git-gc.html">git-gc(1)</a>,
960<a href="git-checkout.html">git-checkout(1)</a>,
961<a href="gitglossary.html">gitglossary(7)</a>,
962<a href="user-manual.html">The Git User&#8217;s Manual</a></p>
963</div>
964</div>
965</div>
966<div class="sect1">
967<h2 id="_git">GIT</h2>
968<div class="sectionbody">
969<div class="paragraph">
970<p>Part of the <a href="git.html">git(1)</a> suite</p>
971</div>
972</div>
973</div>
974</div>
975<div id="footer">
976<div id="footer-text">
977Last updated 2023-12-20 13:32:13 -0800
978</div>
979</div>
980</body>
981</html>