Autogenerated HTML docs for v1.7.0.3-254-g4503b
[git/jnareb-git.git] / git-fsck.html
blob4637f0e6f7f1fcb28eddf6c273225d18d951a55c
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.2.5" />
7 <style type="text/css">
8 /* Debug borders */
9 p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {
11 border: 1px solid red;
15 body {
16 margin: 1em 5% 1em 5%;
19 a {
20 color: blue;
21 text-decoration: underline;
23 a:visited {
24 color: fuchsia;
27 em {
28 font-style: italic;
31 strong {
32 font-weight: bold;
35 tt {
36 color: navy;
39 h1, h2, h3, h4, h5, h6 {
40 color: #527bbd;
41 font-family: sans-serif;
42 margin-top: 1.2em;
43 margin-bottom: 0.5em;
44 line-height: 1.3;
47 h1, h2, h3 {
48 border-bottom: 2px solid silver;
50 h2 {
51 padding-top: 0.5em;
53 h3 {
54 float: left;
56 h3 + * {
57 clear: left;
60 div.sectionbody {
61 font-family: serif;
62 margin-left: 0;
65 hr {
66 border: 1px solid silver;
69 p {
70 margin-top: 0.5em;
71 margin-bottom: 0.5em;
74 pre {
75 padding: 0;
76 margin: 0;
79 span#author {
80 color: #527bbd;
81 font-family: sans-serif;
82 font-weight: bold;
83 font-size: 1.1em;
85 span#email {
87 span#revision {
88 font-family: sans-serif;
91 div#footer {
92 font-family: sans-serif;
93 font-size: small;
94 border-top: 2px solid silver;
95 padding-top: 0.5em;
96 margin-top: 4.0em;
98 div#footer-text {
99 float: left;
100 padding-bottom: 0.5em;
102 div#footer-badges {
103 float: right;
104 padding-bottom: 0.5em;
107 div#preamble,
108 div.tableblock, div.imageblock, div.exampleblock, div.verseblock,
109 div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
110 div.admonitionblock {
111 margin-right: 10%;
112 margin-top: 1.5em;
113 margin-bottom: 1.5em;
115 div.admonitionblock {
116 margin-top: 2.5em;
117 margin-bottom: 2.5em;
120 div.content { /* Block element content. */
121 padding: 0;
124 /* Block element titles. */
125 div.title, caption.title {
126 font-family: sans-serif;
127 font-weight: bold;
128 text-align: left;
129 margin-top: 1.0em;
130 margin-bottom: 0.5em;
132 div.title + * {
133 margin-top: 0;
136 td div.title:first-child {
137 margin-top: 0.0em;
139 div.content div.title:first-child {
140 margin-top: 0.0em;
142 div.content + div.title {
143 margin-top: 0.0em;
146 div.sidebarblock > div.content {
147 background: #ffffee;
148 border: 1px solid silver;
149 padding: 0.5em;
152 div.listingblock {
153 margin-right: 0%;
155 div.listingblock > div.content {
156 border: 1px solid silver;
157 background: #f4f4f4;
158 padding: 0.5em;
161 div.quoteblock > div.content {
162 padding-left: 2.0em;
165 div.attribution {
166 text-align: right;
168 div.verseblock + div.attribution {
169 text-align: left;
172 div.admonitionblock .icon {
173 vertical-align: top;
174 font-size: 1.1em;
175 font-weight: bold;
176 text-decoration: underline;
177 color: #527bbd;
178 padding-right: 0.5em;
180 div.admonitionblock td.content {
181 padding-left: 0.5em;
182 border-left: 2px solid silver;
185 div.exampleblock > div.content {
186 border-left: 2px solid silver;
187 padding: 0.5em;
190 div.verseblock div.content {
191 white-space: pre;
194 div.imageblock div.content { padding-left: 0; }
195 div.imageblock img { border: 1px solid silver; }
196 span.image img { border-style: none; }
198 dl {
199 margin-top: 0.8em;
200 margin-bottom: 0.8em;
202 dt {
203 margin-top: 0.5em;
204 margin-bottom: 0;
205 font-style: italic;
207 dd > *:first-child {
208 margin-top: 0;
211 ul, ol {
212 list-style-position: outside;
214 div.olist2 ol {
215 list-style-type: lower-alpha;
218 div.tableblock > table {
219 border: 3px solid #527bbd;
221 thead {
222 font-family: sans-serif;
223 font-weight: bold;
225 tfoot {
226 font-weight: bold;
229 div.hlist {
230 margin-top: 0.8em;
231 margin-bottom: 0.8em;
233 div.hlist td {
234 padding-bottom: 5px;
236 td.hlist1 {
237 vertical-align: top;
238 font-style: italic;
239 padding-right: 0.8em;
241 td.hlist2 {
242 vertical-align: top;
245 @media print {
246 div#footer-badges { display: none; }
249 div#toctitle {
250 color: #527bbd;
251 font-family: sans-serif;
252 font-size: 1.1em;
253 font-weight: bold;
254 margin-top: 1.0em;
255 margin-bottom: 0.1em;
258 div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
259 margin-top: 0;
260 margin-bottom: 0;
262 div.toclevel2 {
263 margin-left: 2em;
264 font-size: 0.9em;
266 div.toclevel3 {
267 margin-left: 4em;
268 font-size: 0.9em;
270 div.toclevel4 {
271 margin-left: 6em;
272 font-size: 0.9em;
274 include1::./stylesheets/xhtml11-manpage.css[]
275 /* Workarounds for IE6's broken and incomplete CSS2. */
277 div.sidebar-content {
278 background: #ffffee;
279 border: 1px solid silver;
280 padding: 0.5em;
282 div.sidebar-title, div.image-title {
283 font-family: sans-serif;
284 font-weight: bold;
285 margin-top: 0.0em;
286 margin-bottom: 0.5em;
289 div.listingblock div.content {
290 border: 1px solid silver;
291 background: #f4f4f4;
292 padding: 0.5em;
295 div.quoteblock-content {
296 padding-left: 2.0em;
299 div.exampleblock-content {
300 border-left: 2px solid silver;
301 padding-left: 0.5em;
304 /* IE6 sets dynamically generated links as visited. */
305 div#toc a:visited { color: blue; }
306 </style>
307 <title>git-fsck(1)</title>
308 </head>
309 <body>
310 <div id="header">
311 <h1>
312 git-fsck(1) Manual Page
313 </h1>
314 <h2>NAME</h2>
315 <div class="sectionbody">
316 <p>git-fsck -
317 Verifies the connectivity and validity of the objects in the database
318 </p>
319 </div>
320 </div>
321 <h2>SYNOPSIS</h2>
322 <div class="sectionbody">
323 <div class="verseblock">
324 <div class="content"><em>git fsck</em> [--tags] [--root] [--unreachable] [--cache] [--no-reflogs]
325 [--[no-]full] [--strict] [--verbose] [--lost-found] [&lt;object&gt;*]</div></div>
326 </div>
327 <h2 id="_description">DESCRIPTION</h2>
328 <div class="sectionbody">
329 <div class="para"><p>Verifies the connectivity and validity of the objects in the database.</p></div>
330 </div>
331 <h2 id="_options">OPTIONS</h2>
332 <div class="sectionbody">
333 <div class="vlist"><dl>
334 <dt>
335 &lt;object&gt;
336 </dt>
337 <dd>
339 An object to treat as the head of an unreachability trace.
340 </p>
341 <div class="para"><p>If no objects are given, <em>git fsck</em> defaults to using the
342 index file, all SHA1 references in .git/refs/*, and all reflogs (unless
343 --no-reflogs is given) as heads.</p></div>
344 </dd>
345 <dt>
346 --unreachable
347 </dt>
348 <dd>
350 Print out objects that exist but that aren't readable from any
351 of the reference nodes.
352 </p>
353 </dd>
354 <dt>
355 --root
356 </dt>
357 <dd>
359 Report root nodes.
360 </p>
361 </dd>
362 <dt>
363 --tags
364 </dt>
365 <dd>
367 Report tags.
368 </p>
369 </dd>
370 <dt>
371 --cache
372 </dt>
373 <dd>
375 Consider any object recorded in the index also as a head node for
376 an unreachability trace.
377 </p>
378 </dd>
379 <dt>
380 --no-reflogs
381 </dt>
382 <dd>
384 Do not consider commits that are referenced only by an
385 entry in a reflog to be reachable. This option is meant
386 only to search for commits that used to be in a ref, but
387 now aren't, but are still in that corresponding reflog.
388 </p>
389 </dd>
390 <dt>
391 --full
392 </dt>
393 <dd>
395 Check not just objects in GIT_OBJECT_DIRECTORY
396 ($GIT_DIR/objects), but also the ones found in alternate
397 object pools listed in GIT_ALTERNATE_OBJECT_DIRECTORIES
398 or $GIT_DIR/objects/info/alternates,
399 and in packed git archives found in $GIT_DIR/objects/pack
400 and corresponding pack subdirectories in alternate
401 object pools. This is now default; you can turn it off
402 with --no-full.
403 </p>
404 </dd>
405 <dt>
406 --strict
407 </dt>
408 <dd>
410 Enable more strict checking, namely to catch a file mode
411 recorded with g+w bit set, which was created by older
412 versions of git. Existing repositories, including the
413 Linux kernel, git itself, and sparse repository have old
414 objects that triggers this check, but it is recommended
415 to check new projects with this flag.
416 </p>
417 </dd>
418 <dt>
419 --verbose
420 </dt>
421 <dd>
423 Be chatty.
424 </p>
425 </dd>
426 <dt>
427 --lost-found
428 </dt>
429 <dd>
431 Write dangling objects into .git/lost-found/commit/ or
432 .git/lost-found/other/, depending on type. If the object is
433 a blob, the contents are written into the file, rather than
434 its object name.
435 </p>
436 </dd>
437 </dl></div>
438 <div class="para"><p>It tests SHA1 and general object sanity, and it does full tracking of
439 the resulting reachability and everything else. It prints out any
440 corruption it finds (missing or bad objects), and if you use the
441 <em>--unreachable</em> flag it will also print out objects that exist but
442 that aren't readable from any of the specified head nodes.</p></div>
443 <div class="para"><p>So for example</p></div>
444 <div class="literalblock">
445 <div class="content">
446 <pre><tt>git fsck --unreachable HEAD \
447 $(git for-each-ref --format="%(objectname)" refs/heads)</tt></pre>
448 </div></div>
449 <div class="para"><p>will do quite a _lot_ of verification on the tree. There are a few
450 extra validity tests to be added (make sure that tree objects are
451 sorted properly etc), but on the whole if <em>git fsck</em> is happy, you
452 do have a valid tree.</p></div>
453 <div class="para"><p>Any corrupt objects you will have to find in backups or other archives
454 (i.e., you can just remove them and do an <em>rsync</em> with some other site in
455 the hopes that somebody else has the object you have corrupted).</p></div>
456 <div class="para"><p>Of course, "valid tree" doesn't mean that it wasn't generated by some
457 evil person, and the end result might be crap. git is a revision
458 tracking system, not a quality assurance system ;)</p></div>
459 </div>
460 <h2 id="_extracted_diagnostics">Extracted Diagnostics</h2>
461 <div class="sectionbody">
462 <div class="vlist"><dl>
463 <dt>
464 expect dangling commits - potential heads - due to lack of head information
465 </dt>
466 <dd>
468 You haven't specified any nodes as heads so it won't be
469 possible to differentiate between un-parented commits and
470 root nodes.
471 </p>
472 </dd>
473 <dt>
474 missing sha1 directory <em>&lt;dir&gt;</em>
475 </dt>
476 <dd>
478 The directory holding the sha1 objects is missing.
479 </p>
480 </dd>
481 <dt>
482 unreachable &lt;type&gt; &lt;object&gt;
483 </dt>
484 <dd>
486 The &lt;type&gt; object &lt;object&gt;, isn't actually referred to directly
487 or indirectly in any of the trees or commits seen. This can
488 mean that there's another root node that you're not specifying
489 or that the tree is corrupt. If you haven't missed a root node
490 then you might as well delete unreachable nodes since they
491 can't be used.
492 </p>
493 </dd>
494 <dt>
495 missing &lt;type&gt; &lt;object&gt;
496 </dt>
497 <dd>
499 The &lt;type&gt; object &lt;object&gt;, is referred to but isn't present in
500 the database.
501 </p>
502 </dd>
503 <dt>
504 dangling &lt;type&gt; &lt;object&gt;
505 </dt>
506 <dd>
508 The &lt;type&gt; object &lt;object&gt;, is present in the database but never
509 <em>directly</em> used. A dangling commit could be a root node.
510 </p>
511 </dd>
512 <dt>
513 warning: git-fsck: tree &lt;tree&gt; has full pathnames in it
514 </dt>
515 <dd>
517 And it shouldn't&#8230;
518 </p>
519 </dd>
520 <dt>
521 sha1 mismatch &lt;object&gt;
522 </dt>
523 <dd>
525 The database has an object who's sha1 doesn't match the
526 database value.
527 This indicates a serious data integrity problem.
528 </p>
529 </dd>
530 </dl></div>
531 </div>
532 <h2 id="_environment_variables">Environment Variables</h2>
533 <div class="sectionbody">
534 <div class="vlist"><dl>
535 <dt>
536 GIT_OBJECT_DIRECTORY
537 </dt>
538 <dd>
540 used to specify the object database root (usually $GIT_DIR/objects)
541 </p>
542 </dd>
543 <dt>
544 GIT_INDEX_FILE
545 </dt>
546 <dd>
548 used to specify the index file of the index
549 </p>
550 </dd>
551 <dt>
552 GIT_ALTERNATE_OBJECT_DIRECTORIES
553 </dt>
554 <dd>
556 used to specify additional object database roots (usually unset)
557 </p>
558 </dd>
559 </dl></div>
560 </div>
561 <h2 id="_author">Author</h2>
562 <div class="sectionbody">
563 <div class="para"><p>Written by Linus Torvalds &lt;torvalds@osdl.org&gt;</p></div>
564 </div>
565 <h2 id="_documentation">Documentation</h2>
566 <div class="sectionbody">
567 <div class="para"><p>Documentation by David Greaves, Junio C Hamano and the git-list &lt;git@vger.kernel.org&gt;.</p></div>
568 </div>
569 <h2 id="_git">GIT</h2>
570 <div class="sectionbody">
571 <div class="para"><p>Part of the <a href="git.html">git(1)</a> suite</p></div>
572 </div>
573 <div id="footer">
574 <div id="footer-text">
575 Last updated 2010-02-13 00:59:44 UTC
576 </div>
577 </div>
578 </body>
579 </html>