git-fsck

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

    概要

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

    OPTIONS

    作为不可达性痕迹的头部对象的对象。

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

      打印出存在但无法从任何引用节点访问的对象。

      1. --[no-]dangling

      打印存在但永远不会直接使用的对象(默认)。 --no-dangling可用于从输出中省略此信息。

      1. --root

      报告根节点。

      1. --tags

      报告标签。

      1. --cache

      将索引中记录的任何对象也视为不可达性跟踪的头节点。

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

      1. --connectivity-only

      仅检查标记,提交和树对象的连接。通过避免解压缩blob,这会加速操作,但代价是丢失损坏的对象或其他有问题的问题。

      1. --strict

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

      1. --verbose

      说实话。

      1. --lost-found

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

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

        1. --[no-]progress

        除非指定了—no-progress或—verbose,否则默认情况下,当标准错误流附加到终端时,会报告进度状态。 - 即使标准错误流未定向到终端, - progress也会强制进度状态。

        git-fsck测试SHA-1和一般对象的健全性,它完全跟踪产生的可达性和其他所有内容。它会打印出它找到的任何损坏(丢失或坏的对象),如果使用标志,它还会打印出存在但无法从任何指定的头节点(或默认集)访问的对象,正如刚才提到的)。

        您必须在备份或其他存档中找到任何损坏的对象(即,您可以删除它们并与其他某个站点一起执行 rsync ,希望其他人拥有您已损坏的对象)。

        提取的诊断

        1. expect dangling commits - potential heads - due to lack of head information

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

        缺少包含sha1对象的目录。

        1. unreachable <type> <object>

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

        1. missing <type> <object>

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

        1. dangling <type> <object>

        < type>对象< object>,存在于数据库中但从不直接使用。悬挂提交可以是根节点。

        1. hash mismatch <object>

        数据库有一个对象,其哈希值与对象数据库值不匹配。这表明存在严重的数据完整性问题。

        1. GIT_OBJECT_DIRECTORY

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

        1. GIT_INDEX_FILE

        用于指定索引的索引文件

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

        GIT