b2a32d57c8403d5f3a48938760c18b498fc32112
   1git-fsck(1)
   2===========
   3
   4NAME
   5----
   6git-fsck - Verifies the connectivity and validity of the objects in the database
   7
   8
   9SYNOPSIS
  10--------
  11[verse]
  12'git fsck' [--tags] [--root] [--unreachable] [--cache] [--no-reflogs]
  13         [--[no-]full] [--strict] [--verbose] [--lost-found]
  14         [--[no-]dangling] [--[no-]progress] [--connectivity-only]
  15         [--[no-]name-objects] [<object>*]
  16
  17DESCRIPTION
  18-----------
  19Verifies the connectivity and validity of the objects in the database.
  20
  21OPTIONS
  22-------
  23<object>::
  24        An object to treat as the head of an unreachability trace.
  25+
  26If no objects are given, 'git fsck' defaults to using the
  27index file, all SHA-1 references in `refs` namespace, and all reflogs
  28(unless --no-reflogs is given) as heads.
  29
  30--unreachable::
  31        Print out objects that exist but that aren't reachable from any
  32        of the reference nodes.
  33
  34--[no-]dangling::
  35        Print objects that exist but that are never 'directly' used (default).
  36        `--no-dangling` can be used to omit this information from the output.
  37
  38--root::
  39        Report root nodes.
  40
  41--tags::
  42        Report tags.
  43
  44--cache::
  45        Consider any object recorded in the index also as a head node for
  46        an unreachability trace.
  47
  48--no-reflogs::
  49        Do not consider commits that are referenced only by an
  50        entry in a reflog to be reachable.  This option is meant
  51        only to search for commits that used to be in a ref, but
  52        now aren't, but are still in that corresponding reflog.
  53
  54--full::
  55        Check not just objects in GIT_OBJECT_DIRECTORY
  56        ($GIT_DIR/objects), but also the ones found in alternate
  57        object pools listed in GIT_ALTERNATE_OBJECT_DIRECTORIES
  58        or $GIT_DIR/objects/info/alternates,
  59        and in packed Git archives found in $GIT_DIR/objects/pack
  60        and corresponding pack subdirectories in alternate
  61        object pools.  This is now default; you can turn it off
  62        with --no-full.
  63
  64--connectivity-only::
  65        Check only the connectivity of reachable objects, making sure
  66        that any objects referenced by a reachable tag, commit, or tree
  67        is present. This speeds up the operation by avoiding reading
  68        blobs entirely (though it does still check that referenced blobs
  69        exist). This will detect corruption in commits and trees, but
  70        not do any semantic checks (e.g., for format errors). Corruption
  71        in blob objects will not be detected at all.
  72
  73--strict::
  74        Enable more strict checking, namely to catch a file mode
  75        recorded with g+w bit set, which was created by older
  76        versions of Git.  Existing repositories, including the
  77        Linux kernel, Git itself, and sparse repository have old
  78        objects that triggers this check, but it is recommended
  79        to check new projects with this flag.
  80
  81--verbose::
  82        Be chatty.
  83
  84--lost-found::
  85        Write dangling objects into .git/lost-found/commit/ or
  86        .git/lost-found/other/, depending on type.  If the object is
  87        a blob, the contents are written into the file, rather than
  88        its object name.
  89
  90--name-objects::
  91        When displaying names of reachable objects, in addition to the
  92        SHA-1 also display a name that describes *how* they are reachable,
  93        compatible with linkgit:git-rev-parse[1], e.g.
  94        `HEAD@{1234567890}~25^2:src/`.
  95
  96--[no-]progress::
  97        Progress status is reported on the standard error stream by
  98        default when it is attached to a terminal, unless
  99        --no-progress or --verbose is specified. --progress forces
 100        progress status even if the standard error stream is not
 101        directed to a terminal.
 102
 103DISCUSSION
 104----------
 105
 106git-fsck tests SHA-1 and general object sanity, and it does full tracking
 107of the resulting reachability and everything else. It prints out any
 108corruption it finds (missing or bad objects), and if you use the
 109`--unreachable` flag it will also print out objects that exist but that
 110aren't reachable from any of the specified head nodes (or the default
 111set, as mentioned above).
 112
 113Any corrupt objects you will have to find in backups or other archives
 114(i.e., you can just remove them and do an 'rsync' with some other site in
 115the hopes that somebody else has the object you have corrupted).
 116
 117If core.commitGraph is true, the commit-graph file will also be inspected
 118using 'git commit-graph verify'. See linkgit:git-commit-graph[1].
 119
 120Extracted Diagnostics
 121---------------------
 122
 123expect dangling commits - potential heads - due to lack of head information::
 124        You haven't specified any nodes as heads so it won't be
 125        possible to differentiate between un-parented commits and
 126        root nodes.
 127
 128missing sha1 directory '<dir>'::
 129        The directory holding the sha1 objects is missing.
 130
 131unreachable <type> <object>::
 132        The <type> object <object>, isn't actually referred to directly
 133        or indirectly in any of the trees or commits seen. This can
 134        mean that there's another root node that you're not specifying
 135        or that the tree is corrupt. If you haven't missed a root node
 136        then you might as well delete unreachable nodes since they
 137        can't be used.
 138
 139missing <type> <object>::
 140        The <type> object <object>, is referred to but isn't present in
 141        the database.
 142
 143dangling <type> <object>::
 144        The <type> object <object>, is present in the database but never
 145        'directly' used. A dangling commit could be a root node.
 146
 147sha1 mismatch <object>::
 148        The database has an object who's sha1 doesn't match the
 149        database value.
 150        This indicates a serious data integrity problem.
 151
 152Environment Variables
 153---------------------
 154
 155GIT_OBJECT_DIRECTORY::
 156        used to specify the object database root (usually $GIT_DIR/objects)
 157
 158GIT_INDEX_FILE::
 159        used to specify the index file of the index
 160
 161GIT_ALTERNATE_OBJECT_DIRECTORIES::
 162        used to specify additional object database roots (usually unset)
 163
 164GIT
 165---
 166Part of the linkgit:git[1] suite