about summary refs log tree commit diff
path: root/Documentation/git-fsck.txt
diff options
context:
space:
mode:
Diffstat (limited to 'Documentation/git-fsck.txt')
-rw-r--r--Documentation/git-fsck.txt175
1 files changed, 175 insertions, 0 deletions
diff --git a/Documentation/git-fsck.txt b/Documentation/git-fsck.txt
new file mode 100644
index 000000000000..d72d15be5bab
--- /dev/null
+++ b/Documentation/git-fsck.txt
@@ -0,0 +1,175 @@
+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] [<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 `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.
+
+--[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
+	is 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 triggers 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/`.
+
+--[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.
+
+CONFIGURATION
+-------------
+
+include::config/fsck.txt[]
+
+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
+---------------------
+
+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 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.
+
+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