git fsck

优质
小牛编辑
123浏览
2023-12-01

命名

git-fsck - 验证数据库中对象的连通性和有效性

概要

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

描述

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

选项

<对象>

作为不可达跟踪头的对象。

如果没有给定对象,则git fsck默认使用索引文件,refs命名空间中的所有SHA-1引用以及所有reflog(除非给出--no-reflogs)作为首部。

--unreachable

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

--no-dangling

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

--root

报告根节点。

--tags

报告标签。

--cache

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

--no-reflogs

不要将仅由reflog中的条目引用的提交视为可访问。此选项仅用于搜索曾经在ref中的提交,但现在不是,但仍在相应的reflog中。

--full

不仅检查GIT_OBJECT_DIRECTORY($ GIT_DIR / objects)中的对象,还检查在GIT_ALTERNATE_OBJECT_DIRECTORIES或$ GIT_DIR / objects / info / alternates中列出的替代对象池中发现的对象,以及在$ GIT_DIR / objects / pack中找到的打包Git存档中的对象以及相应的对象在备用对象池中打包子目录。这现在是默认的; 你可以用--no-full来关闭它。

--connectivity-only

仅检查标签,提交和树对象的连通性。通过避免解开blob,这会加快操作速度,但会损失丢失的对象或其他有问题的问题。

--strict

启用更严格的检查,即捕获使用旧版Git创建的g + w位集记录的文件模式。现有的存储库(包括Linux内核,Git本身和稀疏存储库)具有触发此检查的旧对象,但建议使用此标志检查新项目。

--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。 - 即使标准错误流未指向终端,进度也会强制进行状态。

讨论

git-fsck测试SHA-1和一般对象的完整性,并且完全跟踪由此产生的可达性和其他一切。它打印出它发现的任何损坏(丢失或损坏的对象),并且如果使用该--unreachable标记,它还将打印出存在但不能从任何指定头节点(或默认设置,如上所述)到达的对象)。

任何损坏的对象,你必须找到备份或其他档案(即,你可以删除它们,并rsync与其他网站做一个希望别人有你已经损坏的对象)。

提取的诊断

由于缺乏头部信息,预计会出现悬而未决的承诺 - 潜在负责人

您没有指定任何节点作为头,因此无法区分未提交的提交和根节点。

缺少sha1目录<dir>

持有sha1对象的目录缺失。

无法访问<type> <object>

<type>对象<object>实际上并不直接或间接引用到所看到的任何树或提交中。这可能意味着您没有指定另一个根节点,或者该树已损坏。如果你没有错过根节点,那么你可能会删除无法访问的节点,因为它们不能被使用。

missing <type> <object>

<type> object <object>被引用,但不存在于数据库中。

dangling <type> <object>

<type> object <object>存在于数据库中,但从未directly使用。一个悬而未决的提交可能是一个根节点。

sha1 mismatch <object>

数据库中有一个sha1与数据库值不匹配的对象。这表示严重的数据完整性问题。

环境变量

GIT_OBJECT_DIRECTORY

用于指定对象数据库的根目录(通常为$ GIT_DIR / objects)

GIT_INDEX_FILE

用于指定索引的索引文件

GIT_ALTERNATE_OBJECT_DIRECTORIES

用于指定其他对象数据库根目录(通常未设置)