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
