Git
简体中文 ▾ Topics ▾ Latest version ▾ git-fsck last updated in 2.43.0

名称

git-fsck - Verifies the connectivity and validity of the objects in the database

概述

git fsck [--tags] [--root] [--unreachable] [--cache] [--no-reflogs]
	 [--[no-]full] [--strict] [--verbose] [--lost-found]
	 [--[no-]dangling] [--[no-]progress] [--connectivity-only]
	 [--[no-]name-objects] [<object>…​]

描述

验证数据库中的对象的连接性和有效性。

选项

<对象>

一个要作为不可及性追踪的头的对象。

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

打印出存在但不能从任何参考节点到达的对象。

--[no-]dangling

打印存在但从未 'directly ' 使用的对象(默认)。 --no-dangling 可以用来从输出中省略这一信息。

--root

报告根节点。

--tags

报告标签。

--cache

考虑将索引中记录的任何对象也作为不可达性追踪的头节点。

--no-reflogs

不认为那些只被引用日志中的条目引用的提交是可以达到的。 这个选项只是为了搜索那些曾经在引用中,但现在不在了,但仍在那个相应引用日志中的提交。

--full

不仅检查 GIT_OBJECT_DIRECTORY ($GIT_DIR/objects) 中的对象,还检查 GIT_ALTERNATE_OBJECT_DIRECTORIES 或 $GIT_DIR/objects/info/alternates 中列出的备用对象库中的对象,以及 $GIT_DIR/objects/pack 和备用对象库中相应 pack 子目录中的打包 Git 档案。 这现在是默认的;你可以用 --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.

无法到达的标签、提交和树也会被访问,以找到历史的悬空部分的提示。如果你不关心这个输出并想进一步加快它的速度,请使用 --no-dangling

--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

要健谈。

--lost-found

将悬空的对象写入 .git/lost-found/commit/ 或 .git/lost-found/other/,具体取决于类型。 如果对象是一个 blob,其内容将被写入文件,而不是其对象名称。

--name-objects

当显示可达对象的名称时,除了 SHA-1外,还显示描述 如何 可达的名称,与 git-rev-parse[1] 兼容,例如,HEAD@{1234567890}~25^2:src/

--[no-]progress

除非指定 --no-progress 或 --verbose,否则当标准错误流连接到终端时,默认情况下会报告进度状态。--progress 即使标准错误流没有指向终端,也会强制显示进度状态。

配置

Warning

Missing zh_HANS-CN/includes/cmd-config-section-all.txt

See original version for this content.

Warning

Missing zh_HANS-CN/config/fsck.txt

See original version for this content.

讨论

git-fsck 测试 SHA-1和一般对象的正确性,并对结果的可及性和其他一切进行全面跟踪。它打印出它发现的任何损坏(缺失或坏的对象),如果你使用 --unreachable 标志,它也会打印出存在但从任何指定的头部节点(或默认集,如上所述)无法到达的对象。

任何损坏的对象,你将不得不在备份或其他档案中找到(也就是说,你可以直接删除它们,并与其他网站做一个 rsync,希望别人拥有你损坏的对象)。

如果 core.commitGraph 为真,提交的图形文件也将用 git commit-graph verify 来检查。见 git-commit-graph[1]

提取的诊断方法

无法到达 <类型> <对象> 的问题

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.

缺少 <类型> <对象>

<类型> 对象 <object>,被提及但不存在于数据库中。

悬空的 <类型> <对象>

<类型> 对象 <object>,存在于数据库中,但从未 directly 使用。一个悬空的提交可能是一个根节点。

哈希值不匹配 <对象>

数据库中有一个对象的哈希值与对象数据库的值不一致。 这表明一个严重的数据完整性问题。

FSCK 信息

下面列出了 git fsck 检测的错误类型和每个错误的含义,以及它们的默认严重程度。 除了那些被标记为 "(FATAL)" 的错误,其他错误的严重程度可以通过设置相应的 fsck.<msg-id> 配置变量来调整。

Warning

Missing zh_HANS-CN/fsck-msgids.txt

See original version for this content.

Environment Variables

GIT_OBJECT_DIRECTORY

用来指定对象数据库的根(通常是 $GIT_DIR/objects)

GIT_INDEX_FILE

用来指定索引的索引文件

GIT_ALTERNATE_OBJECT_DIRECTORIES

用来指定额外的对象数据库根(通常不设置)

GIT

属于 git[1] 文档

scroll-to-top