man pages section 1: User Commands

Exit Print View

Updated: July 2014

git-fsck (1)


git-fsck - Verifies the connectivity and validity of the objects in the database


git fsck [--tags] [--root] [--unreachable] [--cache] [--no-reflogs]
[--[no-]full] [--strict] [--verbose] [--lost-found]
[--[no-]progress] [<object>*]


Git Manual                                            GIT-FSCK(1)

     git-fsck - Verifies the connectivity and validity of the
     objects in the database

     git fsck [--tags] [--root] [--unreachable] [--cache] [--no-reflogs]
              [--[no-]full] [--strict] [--verbose] [--lost-found]
              [--[no-]progress] [<object>*]

     Verifies the connectivity and validity of the objects in the

         An object to treat as the head of an unreachability

         If no objects are given, git fsck defaults to using the
         index file, all SHA1 references in .git/refs/*, and all
         reflogs (unless --no-reflogs is given) as heads.

         Print out objects that exist but that aren't reachable
         from any of the reference nodes.

         Report root nodes.

         Report tags.

         Consider any object recorded in the index also as a head
         node for an unreachability trace.

         Do not consider commits that are referenced only by an
         entry in a reflog to be reachable. This option is meant
         only to search for commits that used to be in a ref, but
         now aren't, but are still in that corresponding reflog.

         Check not just objects in GIT_OBJECT_DIRECTORY
         ($GIT_DIR/objects), but also the ones found in alternate
         object pools listed in GIT_ALTERNATE_OBJECT_DIRECTORIES
         or $GIT_DIR/objects/info/alternates, and in packed git
         archives found in $GIT_DIR/objects/pack and
         corresponding pack subdirectories in alternate object
         pools. This is now default; you can turn it off with

Git          Last change: 02/22/2012                    1

Git Manual                                            GIT-FSCK(1)

         Enable more strict checking, namely to catch a file mode
         recorded with g+w bit set, which was created by older
         versions of git. Existing repositories, including the
         Linux kernel, git itself, and sparse repository have old
         objects that triggers this check, but it is recommended
         to check new projects with this flag.

         Be chatty.

         Write dangling objects into .git/lost-found/commit/ or
         .git/lost-found/other/, depending on type. If the object
         is a blob, the contents are written into the file,
         rather than its object name.

     --progress, --no-progress
         Progress status is reported on the standard error stream
         by default when it is attached to a terminal, unless
         --no-progress or --verbose is specified. --progress
         forces progress status even if the standard error stream
         is not directed to a terminal.

     git-fsck tests SHA1 and general object sanity, and it does
     full tracking of the resulting reachability and everything
     else. It prints out any corruption it finds (missing or bad
     objects), and if you use the --unreachable flag it will also
     print out objects that exist but that aren't reachable from
     any of the specified head nodes (or the default set, as
     mentioned above).

     Any corrupt objects you will have to find in backups or
     other archives (i.e., you can just remove them and do an
     rsync with some other site in the hopes that somebody else
     has the object you have corrupted).

     expect dangling commits - potential heads - due to lack of
     head information
         You haven't specified any nodes as heads so it won't be
         possible to differentiate between un-parented commits
         and root nodes.

     missing sha1 directory <dir>
         The directory holding the sha1 objects is missing.

     unreachable <type> <object>
         The <type> object <object>, isn't actually referred to
         directly or indirectly in any of the trees or commits
         seen. This can mean that there's another root node that

Git          Last change: 02/22/2012                    2

Git Manual                                            GIT-FSCK(1)

         you're not specifying or that the tree is corrupt. If
         you haven't missed a root node then you might as well
         delete unreachable nodes since they can't be used.

     missing <type> <object>
         The <type> object <object>, is referred to but isn't
         present in the database.

     dangling <type> <object>
         The <type> object <object>, is present in the database
         but never directly used. A dangling commit could be a
         root node.

     sha1 mismatch <object>
         The database has an object who's sha1 doesn't match the
         database value. This indicates a serious data integrity

         used to specify the object database root (usually

         used to specify the index file of the index

         used to specify additional object database roots
         (usually unset)

     Part of the git(1) suite

     See attributes(5) for descriptions of the following

     |Availability   | developer/versioning/git |
     |Stability      | Uncommitted              |
     This software was built from source available at  The original
     community source was downloaded from  http://git-

Git          Last change: 02/22/2012                    3

Git Manual                                            GIT-FSCK(1)

     Further information about this software can be found on the
     open source community website at

Git          Last change: 02/22/2012                    4