|  | git-fsck(1) | 
|  | =========== | 
|  |  | 
|  | NAME | 
|  | ---- | 
|  | git-fsck - Verifies the connectivity and validity of the objects in the database | 
|  |  | 
|  |  | 
|  | SYNOPSIS | 
|  | -------- | 
|  | [verse] | 
|  | 'git fsck' [--tags] [--root] [--unreachable] [--cache] [--no-reflogs] | 
|  | [--[no-]full] [--strict] [--verbose] [--lost-found] | 
|  | [--[no-]dangling] [--[no-]progress] [--connectivity-only] | 
|  | [--[no-]name-objects] [--[no-]references] [<object>...] | 
|  |  | 
|  | DESCRIPTION | 
|  | ----------- | 
|  | Verifies the connectivity and validity of the objects in the database. | 
|  |  | 
|  | OPTIONS | 
|  | ------- | 
|  | <object>:: | 
|  | An object to treat as the head of an unreachability trace. | 
|  | + | 
|  | If no objects are given, 'git fsck' defaults to using the | 
|  | index file, all SHA-1 references in the `refs` namespace, and all reflogs | 
|  | (unless --no-reflogs is given) as heads. | 
|  |  | 
|  | --unreachable:: | 
|  | Print out objects that exist but that aren't reachable from any | 
|  | of the reference nodes. | 
|  |  | 
|  | --dangling:: | 
|  | --no-dangling:: | 
|  | Print objects that exist but that are never 'directly' used (default). | 
|  | `--no-dangling` can be used to omit this information from the output. | 
|  |  | 
|  | --root:: | 
|  | Report root nodes. | 
|  |  | 
|  | --tags:: | 
|  | Report tags. | 
|  |  | 
|  | --cache:: | 
|  | Consider any object recorded in the index also as a head node for | 
|  | an unreachability trace. | 
|  |  | 
|  | --no-reflogs:: | 
|  | 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. | 
|  |  | 
|  | --full:: | 
|  | 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 --no-full. | 
|  |  | 
|  | --connectivity-only:: | 
|  | Check only the connectivity of reachable objects, making sure | 
|  | that any objects referenced by a reachable tag, commit, or tree | 
|  | are present. This speeds up the operation by avoiding reading | 
|  | blobs entirely (though it does still check that referenced blobs | 
|  | exist). This will detect corruption in commits and trees, but | 
|  | not do any semantic checks (e.g., for format errors). Corruption | 
|  | in blob objects will not be detected at all. | 
|  | + | 
|  | Unreachable tags, commits, and trees will also be accessed to find the | 
|  | tips of dangling segments of history. Use `--no-dangling` if you don't | 
|  | care about this output and want to speed it up further. | 
|  |  | 
|  | --strict:: | 
|  | 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 trigger this check, but it is recommended | 
|  | to check new projects with this flag. | 
|  |  | 
|  | --verbose:: | 
|  | Be chatty. | 
|  |  | 
|  | --lost-found:: | 
|  | 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. | 
|  |  | 
|  | --name-objects:: | 
|  | When displaying names of reachable objects, in addition to the | 
|  | SHA-1 also display a name that describes *how* they are reachable, | 
|  | compatible with linkgit:git-rev-parse[1], e.g. | 
|  | `HEAD@{1234567890}~25^2:src/`. | 
|  |  | 
|  | --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. | 
|  |  | 
|  | --references:: | 
|  | --no-references:: | 
|  | Control whether to check the references database consistency | 
|  | via 'git refs verify'. See linkgit:git-refs[1] for details. | 
|  | The default is to check the references database. | 
|  |  | 
|  | CONFIGURATION | 
|  | ------------- | 
|  |  | 
|  | include::includes/cmd-config-section-all.adoc[] | 
|  |  | 
|  | include::config/fsck.adoc[] | 
|  |  | 
|  | DISCUSSION | 
|  | ---------- | 
|  |  | 
|  | git-fsck tests SHA-1 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). | 
|  |  | 
|  | If core.commitGraph is true, the commit-graph file will also be inspected | 
|  | using 'git commit-graph verify'. See linkgit:git-commit-graph[1]. | 
|  |  | 
|  | Extracted Diagnostics | 
|  | --------------------- | 
|  |  | 
|  | 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 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. | 
|  |  | 
|  | hash mismatch <object>:: | 
|  | The database has an object whose hash doesn't match the | 
|  | object database value. | 
|  | This indicates a serious data integrity problem. | 
|  |  | 
|  |  | 
|  | FSCK MESSAGES | 
|  | ------------- | 
|  |  | 
|  | The following lists the types of errors `git fsck` detects and what | 
|  | each error means, with their default severity.  The severity of the | 
|  | error, other than those that are marked as "(FATAL)", can be tweaked | 
|  | by setting the corresponding `fsck.<msg-id>` configuration variable. | 
|  |  | 
|  | include::fsck-msgids.adoc[] | 
|  |  | 
|  |  | 
|  | Environment Variables | 
|  | --------------------- | 
|  |  | 
|  | GIT_OBJECT_DIRECTORY:: | 
|  | used to specify the object database root (usually $GIT_DIR/objects) | 
|  |  | 
|  | GIT_INDEX_FILE:: | 
|  | used to specify the index file of the index | 
|  |  | 
|  | GIT_ALTERNATE_OBJECT_DIRECTORIES:: | 
|  | used to specify additional object database roots (usually unset) | 
|  |  | 
|  | GIT | 
|  | --- | 
|  | Part of the linkgit:git[1] suite |