Setup and Config
Getting and Creating Projects
Basic Snapshotting
Branching and Merging
Sharing and Updating Projects
Inspection and Comparison
Patching
Debugging
External Systems
Server Admin
Guides
- gitattributes
- Command-line interface conventions
- Everyday Git
- Frequently Asked Questions (FAQ)
- Glossary
- Hooks
- gitignore
- gitmodules
- Revisions
- Submodules
- Tutorial
- Workflows
- All guides...
Administration
Plumbing Commands
- 2.54.0 no changes
-
2.53.0
2026-02-02
-
2.52.0
2025-11-17
- 2.50.1 → 2.51.2 no changes
-
2.50.0
2025-06-16
- 2.48.1 → 2.49.1 no changes
-
2.48.0
2025-01-10
- 2.47.1 → 2.47.3 no changes
-
2.47.0
2024-10-06
- 2.45.3 → 2.46.4 no changes
- 2.45.2 no changes
-
2.45.1
2024-04-29
- 2.44.3 → 2.45.0 no changes
- 2.44.2 no changes
-
2.44.1
2024-04-19
- 2.43.6 → 2.44.0 no changes
- 2.43.5 no changes
-
2.43.4
2024-04-19
- 2.43.1 → 2.43.3 no changes
-
2.43.0
2023-11-20
- 2.42.4 no changes
- 2.42.3 no changes
-
2.42.2
2024-04-19
- 2.41.3 → 2.42.1 no changes
- 2.41.2 no changes
-
2.41.1
2024-04-19
- 2.40.4 → 2.41.0 no changes
- 2.40.3 no changes
-
2.40.2
2024-04-19
- 2.40.0 → 2.40.1 no changes
- 2.39.5 no changes
-
2.39.4
2024-04-19
- 2.39.3 no changes
-
2.39.2
2023-02-06
- 2.39.1 no changes
-
2.39.0
2022-12-12
- 2.38.1 → 2.38.5 no changes
-
2.38.0
2022-10-02
- 2.35.1 → 2.37.7 no changes
-
2.35.0
2022-01-24
- 2.30.2 → 2.34.8 no changes
- 2.30.1 no changes
- 2.22.2 → 2.30.0 no changes
-
2.22.1
2019-08-11
-
2.22.0
2019-06-07
- 2.21.1 → 2.21.4 no changes
-
2.21.0
2019-02-24
- 2.19.1 → 2.20.5 no changes
-
2.19.0
2018-09-10
- 2.11.4 → 2.18.5 no changes
-
2.10.5
2017-09-22
-
2.9.5
2017-07-30
- 2.7.6 → 2.8.6 no changes
-
2.6.7
2017-05-05
- 2.1.4 → 2.5.6 no changes
-
2.0.5
2014-12-17
概述
git fsck [--tags] [--root] [--unreachable] [--cache] [--no-reflogs]
[--[no-]full] [--strict] [--verbose] [--lost-found]
[--[no-]dangling] [--[no-]progress] [--connectivity-only]
[--[no-]name-objects] [<对象>*]
选项
- <对象>
-
一个要作为不可及性追踪的头的对象。
如果没有给出对象,git fsck 默认使用索引文件、
refs命名空间中的所有 SHA-1 引用,以及所有引用日志(除非 --no-reflogs 选项被给出)作为头。 - --unreachable
-
打印出存在但不能从任何参考节点到达的对象。
- --dangling
- --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
-
只检查可达对象的连接性,确保可达标签、提交或目录树所引用的任何对象都存在。这样可以完全避免读取 blobs,从而加快操作速度(尽管它仍然会检查被引用的 blobs 是否存在)。这将检测提交和树的损坏,但不做任何语义检查(例如,格式错误)。blob 对象中的损坏将完全不会被检测到。
无法到达的标签、提交和树也会被访问,以找到历史的悬空部分的提示。如果你不关心这个输出并想进一步加快它的速度,请使用
--no-dangling。 - --strict
-
启用更严格的检查,即获取记录有 g+w 位的文件模式,这是由旧版本的 Git 创建的。 现有的仓库,包括 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/。 - --progress
- --no-progress
-
除非指定 --no-progress 或 --verbose,否则当标准错误流连接到终端时,默认情况下会报告进度状态。--progress 即使标准错误流没有指向终端,也会强制显示进度状态。
- --references
- --no-references
-
控制是否通过 git refs verify 检查引用数据库的一致性。详见 git-refs[1]。默认会检查引用数据库。
配置
本节中这一行以下的内容都是从 git-config[1] 文档中摘录的。其内容与那里的内容相同:
|
Warning
|
Missing See original version for this content. |
讨论
git-fsck 测试 SHA-1和一般对象的正确性,并对结果的可及性和其他一切进行全面跟踪。它打印出它发现的任何损坏(缺失或坏的对象),如果你使用 --unreachable 标志,它也会打印出存在但从任何指定的头部节点(或默认集,如上所述)无法到达的对象。
任何损坏的对象,你将不得不在备份或其他档案中找到(也就是说,你可以直接删除它们,并与其他网站做一个 rsync,希望别人拥有你损坏的对象)。
如果 core.commitGraph 为真,提交的图形文件也将用 git commit-graph verify 来检查。见 git-commit-graph[1]。
FSCK 信息
下面列出了 git fsck 检测的错误类型和每个错误的含义,以及它们的默认严重程度。 除了那些被标记为 "(FATAL)" 的错误,其他错误的严重程度可以通过设置相应的 fsck.<msg-id> 配置变量来调整。
-
badDate -
(ERROR) 作者/提交者行中的日期格式无效。
-
badDateOverflow -
(ERROR) 作者/提交者行中的日期值无效。
-
badEmail -
(ERROR) 作者/提交者行中的电子邮件格式无效。
-
badFilemode -
(INFO) 树对象包含一个错误的文件模式条目。
-
badGpgsig -
(ERROR) 标签包含一个错误的(被截断的)签名头(例如
gpgsig)。 -
badHeaderContinuation -
(ERROR) 延续头(例如
gpgsig的延续行)被意外截断。 -
badName -
(ERROR) 作者/提交者名称为空。
-
badObjectSha1 -
(ERROR) 对象包含错误的 sha1。
-
badPackedRefEntry -
(ERROR) “packed-refs” 文件包含无效条目。
-
badPackedRefHeader -
(ERROR) “packed-refs” 文件包含无效头。
-
badParentSha1 -
(ERROR) 提交对象包含错误的父 sha1。
-
badRefContent -
(ERROR) ref 的内容有误。
-
badRefFiletype -
(ERROR) ref 的文件类型错误。
-
badRefName -
(ERROR) ref 的格式无效。
-
badReferentName -
(ERROR) 符号引用所指向的引用名称无效。
-
badReftableTableName -
(WARN) reftable 表的名称无效。
-
badTagName -
(INFO) 标签的格式无效。
-
badTimezone -
(ERROR) 在作者/提交者行中发现无效时区。
-
badTree -
(ERROR) 树对象无法解析。
-
badTreeSha1 -
(ERROR) 树对象的格式无效。
-
badType -
(ERROR) 发现无效的对象类型。
-
duplicateEntries -
(ERROR) 树对象包含重复的文件条目。
-
emptyName -
(WARN) 路径包含空名称。
-
emptyPackedRefsFile -
(INFO) “packed-refs” 文件为空。如果你看到此错误,请向 git@vger.kernel.org 邮件列表报告。由于只有非常早期的 Git 版本才会创建这样的空 “packed_refs” 文件,我们未来可能会收紧此规则。
-
extraHeaderEntry -
(IGNORE) 在
tagger之后发现额外头信息。 -
fullPathname -
(WARN) 路径包含以 "/" 开头的完整路径。
-
gitattributesBlob -
(ERROR) 在
.gitattributes位置发现了非 blob 对象。 -
gitattributesLarge -
(ERROR)
.gitattributesblob 过大。 -
gitattributesLineLength -
(ERROR)
.gitattributesblob 包含过长的行。 -
gitattributesMissing -
(ERROR) 无法读取
.gitattributesblob。 -
gitattributesSymlink -
(INFO)
.gitattributes是一个符号链接。 -
gitignoreSymlink -
(INFO)
.gitignore是一个符号链接。 -
gitmodulesBlob -
(ERROR) 在
.gitmodules位置发现了非 blob 对象。 -
gitmodulesLarge -
(ERROR)
.gitmodules文件过大,无法解析。 -
gitmodulesMissing -
(ERROR) 无法读取
.gitmodulesblob。 -
gitmodulesName -
(ERROR) 子模块名称无效。
-
gitmodulesParse -
(INFO) 无法解析
.gitmodulesblob。 -
gitmodulesPath -
(ERROR)
.gitmodules路径无效。 -
gitmodulesSymlink -
(ERROR)
.gitmodules是一个符号链接。 -
gitmodulesUpdate -
(ERROR) 发现无效的子模块更新设置。
-
gitmodulesUrl -
(ERROR) 发现无效的子模块 URL。
-
hasDot -
(WARN) 树对象包含名为
.的条目。 -
hasDotdot -
(WARN) 树对象包含名为
..的条目。 -
hasDotgit -
(WARN) 树对象包含名为
.git的条目。 -
largePathname -
(WARN) 树对象包含路径名非常长的条目。如果
fsck.largePathname的值包含冒号,则会将该值用作允许的最大长度(例如,"warn:10" 会对任何长度为 11 字节或以上的路径组件发出警告)。默认值为 4096。 -
mailmapSymlink -
(INFO)
.mailmap是一个符号链接。 -
missingAuthor -
(ERROR) 缺少作者。
-
missingCommitter -
(ERROR) 缺少提交者。
-
missingEmail -
(ERROR) 作者/提交者行中缺少电子邮件地址。
-
missingNameBeforeEmail -
(ERROR) 作者/提交者行中在电子邮件地址前缺少名称。
-
missingObject -
(ERROR) 标签对象中缺少
object行。 -
missingSpaceBeforeDate -
(ERROR) 作者/提交者行中在日期前缺少空格。
-
missingSpaceBeforeEmail -
(ERROR) 作者/提交者行中在电子邮件地址前缺少空格。
-
missingTag -
(ERROR) 标签对象在
type行之后意外结束。 -
missingTagEntry -
(ERROR) 标签对象中缺少
tag行。 -
missingTaggerEntry -
(INFO) 标签对象中缺少
tagger行。 -
missingTree -
(ERROR) 提交对象中缺少
tree行。 -
missingType -
(ERROR) 标签对象的
type行上的类型值无效。 -
missingTypeEntry -
(ERROR) 标签对象中缺少
type行。 -
multipleAuthors -
(ERROR) 在提交中发现多条作者行。
-
nulInCommit -
(WARN) 在提交对象正文中发现 NUL 字节。
-
nulInHeader -
(FATAL) 对象头中存在 NUL 字节。
-
nullSha1 -
(WARN) 树对象包含指向空 sha1 的条目。
-
packedRefEntryNotTerminated -
(ERROR) “packed-refs” 文件包含未以换行符结尾的条目。
-
packedRefUnsorted -
(ERROR) “packed-refs” 文件未排序。
-
refMissingNewline -
(INFO) 存在一个不以换行符(LF)结尾的松散 ref。由于有效的 Git 实现从不会创建这样的松散 ref 文件,它未来可能会变成错误。如果你看到此错误,请向 git@vger.kernel.org 邮件列表报告,因为我们需要知道是哪些工具创建了这种文件。
-
symlinkRef -
(INFO) 使用了符号链接作为 symref。如果你看到此错误,请向 git@vger.kernel.org 邮件列表报告,因为我们正在评估停止支持将符号链接创建为 symref 的可行性。
-
symrefTargetIsNotARef -
(INFO) 符号引用的目标既不指向根引用,也不指向以 “refs/” 开头的引用。尽管我们允许使用
gitsymbolic-ref创建一个指向 “ref” 之外目标的 symref,但未来可能会收紧此规则。如果你看到此错误,请向 git@vger.kernel.org 邮件列表报告,因为我们需要知道哪些工具创建了这样的文件。 -
trailingRefContent -
(INFO) 一个松散 ref 含有尾随内容。由于有效的 Git 实现从不会创建这样的松散 ref 文件,它未来可能会变成错误。如果你看到此错误,请向 git@vger.kernel.org 邮件列表报告,因为我们需要知道哪些工具创建了这样的文件。
-
treeNotSorted -
(ERROR) 树对象未正确排序。
-
unknownType -
(ERROR) 发现未知对象类型。
-
unterminatedHeader -
(FATAL) 对象头缺少行结束符。
-
zeroPaddedDate -
(ERROR) 在作者/提交者行中发现了带前导零填充的日期。
-
zeroPaddedFilemode -
(WARN) 在树对象中发现了带前导零填充的文件模式。
GIT
属于 git[1] 文档