path: root/Documentation/git-fsck.txt
diff options
Diffstat (limited to 'Documentation/git-fsck.txt')
1 files changed, 139 insertions, 0 deletions
diff --git a/Documentation/git-fsck.txt b/Documentation/git-fsck.txt
new file mode 100644
index 0000000..058009d
--- /dev/null
+++ b/Documentation/git-fsck.txt
@@ -0,0 +1,139 @@
+git-fsck - Verifies the connectivity and validity of the objects in the database
+'git-fsck' [--tags] [--root] [--unreachable] [--cache]
+ [--full] [--strict] [<object>*]
+Verifies the connectivity and validity of the objects in the database.
+ An object to treat as the head of an unreachability trace.
+If no objects are given, git-fsck defaults to using the
+index file and all SHA1 references in .git/refs/* as heads.
+ Print out objects that exist but that aren't readable 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.
+ Check not just objects in GIT_OBJECT_DIRECTORY
+ ($GIT_DIR/objects), but also the ones found in alternate
+ 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.
+ 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.
+It 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 readable from any of the specified head nodes.
+So for example
+ git-fsck --unreachable HEAD $(cat .git/refs/heads/*)
+will do quite a _lot_ of verification on the tree. There are a few
+extra validity tests to be added (make sure that tree objects are
+sorted properly etc), but on the whole if "git-fsck" is happy, you
+do have a valid tree.
+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).
+Of course, "valid tree" doesn't mean that it wasn't generated by some
+evil person, and the end result might be crap. git is a revision
+tracking system, not a quality assurance system ;)
+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.
+warning: git-fsck: tree <tree> has full pathnames in it::
+ And it shouldn't...
+sha1 mismatch <object>::
+ The database has an object who's sha1 doesn't match the
+ database value.
+ This indicates a serious data integrity problem.
+Environment Variables
+ used to specify the object database root (usually $GIT_DIR/objects)
+ used to specify the index file of the index
+ used to specify additional object database roots (usually unset)
+Written by Linus Torvalds <>
+Documentation by David Greaves, Junio C Hamano and the git-list <>.
+Part of the gitlink:git[7] suite