Autogenerated HTML docs for v1.7.6-549-gf85a0
[git/jnareb-git.git] / gitrepository-layout.html
blobee0adcabf05ec97c2d230489c3795e58113f80eb
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
2 "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
4 <head>
5 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
6 <meta name="generator" content="AsciiDoc 8.4.5" />
7 <title>gitrepository-layout(5)</title>
8 <style type="text/css">
9 /* Debug borders */
10 p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {
12 border: 1px solid red;
16 body {
17 margin: 1em 5% 1em 5%;
20 a {
21 color: blue;
22 text-decoration: underline;
24 a:visited {
25 color: fuchsia;
28 em {
29 font-style: italic;
30 color: navy;
33 strong {
34 font-weight: bold;
35 color: #083194;
38 tt {
39 color: navy;
42 h1, h2, h3, h4, h5, h6 {
43 color: #527bbd;
44 font-family: sans-serif;
45 margin-top: 1.2em;
46 margin-bottom: 0.5em;
47 line-height: 1.3;
50 h1, h2, h3 {
51 border-bottom: 2px solid silver;
53 h2 {
54 padding-top: 0.5em;
56 h3 {
57 float: left;
59 h3 + * {
60 clear: left;
63 div.sectionbody {
64 font-family: serif;
65 margin-left: 0;
68 hr {
69 border: 1px solid silver;
72 p {
73 margin-top: 0.5em;
74 margin-bottom: 0.5em;
77 ul, ol, li > p {
78 margin-top: 0;
81 pre {
82 padding: 0;
83 margin: 0;
86 span#author {
87 color: #527bbd;
88 font-family: sans-serif;
89 font-weight: bold;
90 font-size: 1.1em;
92 span#email {
94 span#revnumber, span#revdate, span#revremark {
95 font-family: sans-serif;
98 div#footer {
99 font-family: sans-serif;
100 font-size: small;
101 border-top: 2px solid silver;
102 padding-top: 0.5em;
103 margin-top: 4.0em;
105 div#footer-text {
106 float: left;
107 padding-bottom: 0.5em;
109 div#footer-badges {
110 float: right;
111 padding-bottom: 0.5em;
114 div#preamble {
115 margin-top: 1.5em;
116 margin-bottom: 1.5em;
118 div.tableblock, div.imageblock, div.exampleblock, div.verseblock,
119 div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
120 div.admonitionblock {
121 margin-top: 1.5em;
122 margin-bottom: 1.5em;
124 div.admonitionblock {
125 margin-top: 2.5em;
126 margin-bottom: 2.5em;
129 div.content { /* Block element content. */
130 padding: 0;
133 /* Block element titles. */
134 div.title, caption.title {
135 color: #527bbd;
136 font-family: sans-serif;
137 font-weight: bold;
138 text-align: left;
139 margin-top: 1.0em;
140 margin-bottom: 0.5em;
142 div.title + * {
143 margin-top: 0;
146 td div.title:first-child {
147 margin-top: 0.0em;
149 div.content div.title:first-child {
150 margin-top: 0.0em;
152 div.content + div.title {
153 margin-top: 0.0em;
156 div.sidebarblock > div.content {
157 background: #ffffee;
158 border: 1px solid silver;
159 padding: 0.5em;
162 div.listingblock > div.content {
163 border: 1px solid silver;
164 background: #f4f4f4;
165 padding: 0.5em;
168 div.quoteblock {
169 padding-left: 2.0em;
170 margin-right: 10%;
172 div.quoteblock > div.attribution {
173 padding-top: 0.5em;
174 text-align: right;
177 div.verseblock {
178 padding-left: 2.0em;
179 margin-right: 10%;
181 div.verseblock > div.content {
182 white-space: pre;
184 div.verseblock > div.attribution {
185 padding-top: 0.75em;
186 text-align: left;
188 /* DEPRECATED: Pre version 8.2.7 verse style literal block. */
189 div.verseblock + div.attribution {
190 text-align: left;
193 div.admonitionblock .icon {
194 vertical-align: top;
195 font-size: 1.1em;
196 font-weight: bold;
197 text-decoration: underline;
198 color: #527bbd;
199 padding-right: 0.5em;
201 div.admonitionblock td.content {
202 padding-left: 0.5em;
203 border-left: 2px solid silver;
206 div.exampleblock > div.content {
207 border-left: 2px solid silver;
208 padding: 0.5em;
211 div.imageblock div.content { padding-left: 0; }
212 span.image img { border-style: none; }
213 a.image:visited { color: white; }
215 dl {
216 margin-top: 0.8em;
217 margin-bottom: 0.8em;
219 dt {
220 margin-top: 0.5em;
221 margin-bottom: 0;
222 font-style: normal;
223 color: navy;
225 dd > *:first-child {
226 margin-top: 0.1em;
229 ul, ol {
230 list-style-position: outside;
232 ol.arabic {
233 list-style-type: decimal;
235 ol.loweralpha {
236 list-style-type: lower-alpha;
238 ol.upperalpha {
239 list-style-type: upper-alpha;
241 ol.lowerroman {
242 list-style-type: lower-roman;
244 ol.upperroman {
245 list-style-type: upper-roman;
248 div.compact ul, div.compact ol,
249 div.compact p, div.compact p,
250 div.compact div, div.compact div {
251 margin-top: 0.1em;
252 margin-bottom: 0.1em;
255 div.tableblock > table {
256 border: 3px solid #527bbd;
258 thead {
259 font-family: sans-serif;
260 font-weight: bold;
262 tfoot {
263 font-weight: bold;
265 td > div.verse {
266 white-space: pre;
268 p.table {
269 margin-top: 0;
271 /* Because the table frame attribute is overriden by CSS in most browsers. */
272 div.tableblock > table[frame="void"] {
273 border-style: none;
275 div.tableblock > table[frame="hsides"] {
276 border-left-style: none;
277 border-right-style: none;
279 div.tableblock > table[frame="vsides"] {
280 border-top-style: none;
281 border-bottom-style: none;
285 div.hdlist {
286 margin-top: 0.8em;
287 margin-bottom: 0.8em;
289 div.hdlist tr {
290 padding-bottom: 15px;
292 dt.hdlist1.strong, td.hdlist1.strong {
293 font-weight: bold;
295 td.hdlist1 {
296 vertical-align: top;
297 font-style: normal;
298 padding-right: 0.8em;
299 color: navy;
301 td.hdlist2 {
302 vertical-align: top;
304 div.hdlist.compact tr {
305 margin: 0;
306 padding-bottom: 0;
309 .comment {
310 background: yellow;
313 @media print {
314 div#footer-badges { display: none; }
317 div#toctitle {
318 color: #527bbd;
319 font-family: sans-serif;
320 font-size: 1.1em;
321 font-weight: bold;
322 margin-top: 1.0em;
323 margin-bottom: 0.1em;
326 div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
327 margin-top: 0;
328 margin-bottom: 0;
330 div.toclevel2 {
331 margin-left: 2em;
332 font-size: 0.9em;
334 div.toclevel3 {
335 margin-left: 4em;
336 font-size: 0.9em;
338 div.toclevel4 {
339 margin-left: 6em;
340 font-size: 0.9em;
342 /* Overrides for manpage documents */
343 h1 {
344 padding-top: 0.5em;
345 padding-bottom: 0.5em;
346 border-top: 2px solid silver;
347 border-bottom: 2px solid silver;
349 h2 {
350 border-style: none;
352 div.sectionbody {
353 margin-left: 5%;
356 @media print {
357 div#toc { display: none; }
360 /* Workarounds for IE6's broken and incomplete CSS2. */
362 div.sidebar-content {
363 background: #ffffee;
364 border: 1px solid silver;
365 padding: 0.5em;
367 div.sidebar-title, div.image-title {
368 color: #527bbd;
369 font-family: sans-serif;
370 font-weight: bold;
371 margin-top: 0.0em;
372 margin-bottom: 0.5em;
375 div.listingblock div.content {
376 border: 1px solid silver;
377 background: #f4f4f4;
378 padding: 0.5em;
381 div.quoteblock-attribution {
382 padding-top: 0.5em;
383 text-align: right;
386 div.verseblock-content {
387 white-space: pre;
389 div.verseblock-attribution {
390 padding-top: 0.75em;
391 text-align: left;
394 div.exampleblock-content {
395 border-left: 2px solid silver;
396 padding-left: 0.5em;
399 /* IE6 sets dynamically generated links as visited. */
400 div#toc a:visited { color: blue; }
401 </style>
402 </head>
403 <body>
404 <div id="header">
405 <h1>
406 gitrepository-layout(5) Manual Page
407 </h1>
408 <h2>NAME</h2>
409 <div class="sectionbody">
410 <p>gitrepository-layout -
411 Git Repository Layout
412 </p>
413 </div>
414 </div>
415 <h2 id="_synopsis">SYNOPSIS</h2>
416 <div class="sectionbody">
417 <div class="paragraph"><p>$GIT_DIR/*</p></div>
418 </div>
419 <h2 id="_description">DESCRIPTION</h2>
420 <div class="sectionbody">
421 <div class="paragraph"><p>You may find these things in your git repository (<tt>.git</tt>
422 directory for a repository associated with your working tree, or
423 <tt>&lt;project&gt;.git</tt> directory for a public <em>bare</em> repository. It is
424 also possible to have a working tree where <tt>.git</tt> is a plain
425 ASCII file containing <tt>gitdir: &lt;path&gt;</tt>, i.e. the path to the
426 real git repository).</p></div>
427 <div class="dlist"><dl>
428 <dt class="hdlist1">
429 objects
430 </dt>
431 <dd>
433 Object store associated with this repository. Usually
434 an object store is self sufficient (i.e. all the objects
435 that are referred to by an object found in it are also
436 found in it), but there are couple of ways to violate
438 </p>
439 <div class="olist arabic"><ol class="arabic">
440 <li>
442 You could populate the repository by running a commit walker
443 without <tt>-a</tt> option. Depending on which options are given, you
444 could have only commit objects without associated blobs and
445 trees this way, for example. A repository with this kind of
446 incomplete object store is not suitable to be published to the
447 outside world but sometimes useful for private repository.
448 </p>
449 </li>
450 <li>
452 You also could have an incomplete but locally usable repository
453 by cloning shallowly. See <a href="git-clone.html">git-clone(1)</a>.
454 </p>
455 </li>
456 <li>
458 You can be using <tt>objects/info/alternates</tt> mechanism, or
459 <tt>$GIT_ALTERNATE_OBJECT_DIRECTORIES</tt> mechanism to <em>borrow</em>
460 objects from other object stores. A repository with this kind
461 of incomplete object store is not suitable to be published for
462 use with dumb transports but otherwise is OK as long as
463 <tt>objects/info/alternates</tt> points at the right object stores
464 it borrows from.
465 </p>
466 </li>
467 </ol></div>
468 </dd>
469 <dt class="hdlist1">
470 objects/[0-9a-f][0-9a-f]
471 </dt>
472 <dd>
474 Traditionally, each object is stored in its own file.
475 They are split into 256 subdirectories using the first
476 two letters from its object name to keep the number of
477 directory entries <tt>objects</tt> directory itself needs to
478 hold. Objects found here are often called <em>unpacked</em>
479 (or <em>loose</em>) objects.
480 </p>
481 </dd>
482 <dt class="hdlist1">
483 objects/pack
484 </dt>
485 <dd>
487 Packs (files that store many object in compressed form,
488 along with index files to allow them to be randomly
489 accessed) are found in this directory.
490 </p>
491 </dd>
492 <dt class="hdlist1">
493 objects/info
494 </dt>
495 <dd>
497 Additional information about the object store is
498 recorded in this directory.
499 </p>
500 </dd>
501 <dt class="hdlist1">
502 objects/info/packs
503 </dt>
504 <dd>
506 This file is to help dumb transports discover what packs
507 are available in this object store. Whenever a pack is
508 added or removed, <tt>git update-server-info</tt> should be run
509 to keep this file up-to-date if the repository is
510 published for dumb transports. <em>git repack</em> does this
511 by default.
512 </p>
513 </dd>
514 <dt class="hdlist1">
515 objects/info/alternates
516 </dt>
517 <dd>
519 This file records paths to alternate object stores that
520 this object store borrows objects from, one pathname per
521 line. Note that not only native Git tools use it locally,
522 but the HTTP fetcher also tries to use it remotely; this
523 will usually work if you have relative paths (relative
524 to the object database, not to the repository!) in your
525 alternates file, but it will not work if you use absolute
526 paths unless the absolute path in filesystem and web URL
527 is the same. See also <em>objects/info/http-alternates</em>.
528 </p>
529 </dd>
530 <dt class="hdlist1">
531 objects/info/http-alternates
532 </dt>
533 <dd>
535 This file records URLs to alternate object stores that
536 this object store borrows objects from, to be used when
537 the repository is fetched over HTTP.
538 </p>
539 </dd>
540 <dt class="hdlist1">
541 refs
542 </dt>
543 <dd>
545 References are stored in subdirectories of this
546 directory. The <em>git prune</em> command knows to keep
547 objects reachable from refs found in this directory and
548 its subdirectories.
549 </p>
550 </dd>
551 <dt class="hdlist1">
552 refs/heads/<tt>name</tt>
553 </dt>
554 <dd>
556 records tip-of-the-tree commit objects of branch <tt>name</tt>
557 </p>
558 </dd>
559 <dt class="hdlist1">
560 refs/tags/<tt>name</tt>
561 </dt>
562 <dd>
564 records any object name (not necessarily a commit
565 object, or a tag object that points at a commit object).
566 </p>
567 </dd>
568 <dt class="hdlist1">
569 refs/remotes/<tt>name</tt>
570 </dt>
571 <dd>
573 records tip-of-the-tree commit objects of branches copied
574 from a remote repository.
575 </p>
576 </dd>
577 <dt class="hdlist1">
578 packed-refs
579 </dt>
580 <dd>
582 records the same information as refs/heads/, refs/tags/,
583 and friends record in a more efficient way. See
584 <a href="git-pack-refs.html">git-pack-refs(1)</a>.
585 </p>
586 </dd>
587 <dt class="hdlist1">
588 HEAD
589 </dt>
590 <dd>
592 A symref (see glossary) to the <tt>refs/heads/</tt> namespace
593 describing the currently active branch. It does not mean
594 much if the repository is not associated with any working tree
595 (i.e. a <em>bare</em> repository), but a valid git repository
596 <strong>must</strong> have the HEAD file; some porcelains may use it to
597 guess the designated "default" branch of the repository
598 (usually <em>master</em>). It is legal if the named branch
599 <em>name</em> does not (yet) exist. In some legacy setups, it is
600 a symbolic link instead of a symref that points at the current
601 branch.
602 </p>
603 <div class="paragraph"><p>HEAD can also record a specific commit directly, instead of
604 being a symref to point at the current branch. Such a state
605 is often called <em>detached HEAD</em>, and almost all commands work
606 identically as normal. See <a href="git-checkout.html">git-checkout(1)</a> for
607 details.</p></div>
608 </dd>
609 <dt class="hdlist1">
610 branches
611 </dt>
612 <dd>
614 A slightly deprecated way to store shorthands to be used
615 to specify URL to <em>git fetch</em>, <em>git pull</em> and <em>git push</em>
616 commands is to store a file in <tt>branches/&lt;name&gt;</tt> and
617 give <em>name</em> to these commands in place of <em>repository</em>
618 argument.
619 </p>
620 </dd>
621 <dt class="hdlist1">
622 hooks
623 </dt>
624 <dd>
626 Hooks are customization scripts used by various git
627 commands. A handful of sample hooks are installed when
628 <em>git init</em> is run, but all of them are disabled by
629 default. To enable, the <tt>.sample</tt> suffix has to be
630 removed from the filename by renaming.
631 Read <a href="githooks.html">githooks(5)</a> for more details about
632 each hook.
633 </p>
634 </dd>
635 <dt class="hdlist1">
636 index
637 </dt>
638 <dd>
640 The current index file for the repository. It is
641 usually not found in a bare repository.
642 </p>
643 </dd>
644 <dt class="hdlist1">
645 info
646 </dt>
647 <dd>
649 Additional information about the repository is recorded
650 in this directory.
651 </p>
652 </dd>
653 <dt class="hdlist1">
654 info/refs
655 </dt>
656 <dd>
658 This file helps dumb transports discover what refs are
659 available in this repository. If the repository is
660 published for dumb transports, this file should be
661 regenerated by <em>git update-server-info</em> every time a tag
662 or branch is created or modified. This is normally done
663 from the <tt>hooks/update</tt> hook, which is run by the
664 <em>git-receive-pack</em> command when you <em>git push</em> into the
665 repository.
666 </p>
667 </dd>
668 <dt class="hdlist1">
669 info/grafts
670 </dt>
671 <dd>
673 This file records fake commit ancestry information, to
674 pretend the set of parents a commit has is different
675 from how the commit was actually created. One record
676 per line describes a commit and its fake parents by
677 listing their 40-byte hexadecimal object names separated
678 by a space and terminated by a newline.
679 </p>
680 </dd>
681 <dt class="hdlist1">
682 info/exclude
683 </dt>
684 <dd>
686 This file, by convention among Porcelains, stores the
687 exclude pattern list. <tt>.gitignore</tt> is the per-directory
688 ignore file. <em>git status</em>, <em>git add</em>, <em>git rm</em> and
689 <em>git clean</em> look at it but the core git commands do not look
690 at it. See also: <a href="gitignore.html">gitignore(5)</a>.
691 </p>
692 </dd>
693 <dt class="hdlist1">
694 remotes
695 </dt>
696 <dd>
698 Stores shorthands to be used to give URL and default
699 refnames to interact with remote repository to
700 <em>git fetch</em>, <em>git pull</em> and <em>git push</em> commands.
701 </p>
702 </dd>
703 <dt class="hdlist1">
704 logs
705 </dt>
706 <dd>
708 Records of changes made to refs are stored in this
709 directory. See <a href="git-update-ref.html">git-update-ref(1)</a>
710 for more information.
711 </p>
712 </dd>
713 <dt class="hdlist1">
714 logs/refs/heads/<tt>name</tt>
715 </dt>
716 <dd>
718 Records all changes made to the branch tip named <tt>name</tt>.
719 </p>
720 </dd>
721 <dt class="hdlist1">
722 logs/refs/tags/<tt>name</tt>
723 </dt>
724 <dd>
726 Records all changes made to the tag named <tt>name</tt>.
727 </p>
728 </dd>
729 <dt class="hdlist1">
730 shallow
731 </dt>
732 <dd>
734 This is similar to <tt>info/grafts</tt> but is internally used
735 and maintained by shallow clone mechanism. See <tt>--depth</tt>
736 option to <a href="git-clone.html">git-clone(1)</a> and <a href="git-fetch.html">git-fetch(1)</a>.
737 </p>
738 </dd>
739 </dl></div>
740 </div>
741 <h2 id="_see_also">SEE ALSO</h2>
742 <div class="sectionbody">
743 <div class="paragraph"><p><a href="git-init.html">git-init(1)</a>,
744 <a href="git-clone.html">git-clone(1)</a>,
745 <a href="git-fetch.html">git-fetch(1)</a>,
746 <a href="git-pack-refs.html">git-pack-refs(1)</a>,
747 <a href="git-gc.html">git-gc(1)</a>,
748 <a href="git-checkout.html">git-checkout(1)</a>,
749 <a href="gitglossary.html">gitglossary(7)</a>,
750 <a href="user-manual.html">The Git User&#8217;s Manual</a></p></div>
751 </div>
752 <h2 id="_git">GIT</h2>
753 <div class="sectionbody">
754 <div class="paragraph"><p>Part of the <a href="git.html">git(1)</a> suite.</p></div>
755 </div>
756 <div id="footer">
757 <div id="footer-text">
758 Last updated 2010-08-18 22:14:44 UTC
759 </div>
760 </div>
761 </body>
762 </html>