'\" t .\" Title: git-fsck .\" Author: [FIXME: author] [see http://docbook.sf.net/el/author] .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 09/28/2018 .\" Manual: Git Manual .\" Source: Git 2.11.0 .\" Language: English .\" .TH "GIT\-FSCK" "1" "09/28/2018" "Git 2\&.11\&.0" "Git Manual" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" git-fsck \- Verifies the connectivity and validity of the objects in the database .SH "SYNOPSIS" .sp .nf \fIgit fsck\fR [\-\-tags] [\-\-root] [\-\-unreachable] [\-\-cache] [\-\-no\-reflogs] [\-\-[no\-]full] [\-\-strict] [\-\-verbose] [\-\-lost\-found] [\-\-[no\-]dangling] [\-\-[no\-]progress] [\-\-connectivity\-only] [\-\-[no\-]name\-objects] [*] .fi .sp .SH "DESCRIPTION" .sp Verifies the connectivity and validity of the objects in the database\&. .SH "OPTIONS" .PP .RS 4 An object to treat as the head of an unreachability trace\&. .sp If no objects are given, \fIgit fsck\fR defaults to using the index file, all SHA\-1 references in \fBrefs\fR namespace, and all reflogs (unless \-\-no\-reflogs is given) as heads\&. .RE .PP \-\-unreachable .RS 4 Print out objects that exist but that aren\(cqt reachable from any of the reference nodes\&. .RE .PP \-\-[no\-]dangling .RS 4 Print objects that exist but that are never \fIdirectly\fR used (default)\&. \fB\-\-no\-dangling\fR can be used to omit this information from the output\&. .RE .PP \-\-root .RS 4 Report root nodes\&. .RE .PP \-\-tags .RS 4 Report tags\&. .RE .PP \-\-cache .RS 4 Consider any object recorded in the index also as a head node for an unreachability trace\&. .RE .PP \-\-no\-reflogs .RS 4 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\(cqt, but are still in that corresponding reflog\&. .RE .PP \-\-full .RS 4 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\&. .RE .PP \-\-connectivity\-only .RS 4 Check only the connectivity of tags, commits and tree objects\&. By avoiding to unpack blobs, this speeds up the operation, at the expense of missing corrupt objects or other problematic issues\&. .RE .PP \-\-strict .RS 4 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\&. .RE .PP \-\-verbose .RS 4 Be chatty\&. .RE .PP \-\-lost\-found .RS 4 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\&. .RE .PP \-\-name\-objects .RS 4 When displaying names of reachable objects, in addition to the SHA\-1 also display a name that describes \fBhow\fR they are reachable, compatible with \fBgit-rev-parse\fR(1), e\&.g\&. \fBHEAD@{1234567890}~25^2:src/\fR\&. .RE .PP \-\-[no\-]progress .RS 4 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\&. .RE .SH "DISCUSSION" .sp 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 \fB\-\-unreachable\fR flag it will also print out objects that exist but that aren\(cqt reachable from any of the specified head nodes (or the default set, as mentioned above)\&. .sp Any corrupt objects you will have to find in backups or other archives (i\&.e\&., you can just remove them and do an \fIrsync\fR with some other site in the hopes that somebody else has the object you have corrupted)\&. .SH "EXTRACTED DIAGNOSTICS" .PP expect dangling commits \- potential heads \- due to lack of head information .RS 4 You haven\(cqt specified any nodes as heads so it won\(cqt be possible to differentiate between un\-parented commits and root nodes\&. .RE .PP missing sha1 directory \fI\fR .RS 4 The directory holding the sha1 objects is missing\&. .RE .PP unreachable .RS 4 The object , isn\(cqt actually referred to directly or indirectly in any of the trees or commits seen\&. This can mean that there\(cqs another root node that you\(cqre not specifying or that the tree is corrupt\&. If you haven\(cqt missed a root node then you might as well delete unreachable nodes since they can\(cqt be used\&. .RE .PP missing .RS 4 The object , is referred to but isn\(cqt present in the database\&. .RE .PP dangling .RS 4 The object , is present in the database but never \fIdirectly\fR used\&. A dangling commit could be a root node\&. .RE .PP sha1 mismatch .RS 4 The database has an object who\(cqs sha1 doesn\(cqt match the database value\&. This indicates a serious data integrity problem\&. .RE .SH "ENVIRONMENT VARIABLES" .PP GIT_OBJECT_DIRECTORY .RS 4 used to specify the object database root (usually $GIT_DIR/objects) .RE .PP GIT_INDEX_FILE .RS 4 used to specify the index file of the index .RE .PP GIT_ALTERNATE_OBJECT_DIRECTORIES .RS 4 used to specify additional object database roots (usually unset) .RE .SH "GIT" .sp Part of the \fBgit\fR(1) suite