git fsck
git
用法
git fsck [--lost-found] [--unreachable]检查对象库并列出没有任何引用指向的提交,这是 reflog 条目也没了之后找回被 reset 弄丢的工作的第二条路;它只报告,不修复。
常用选项
| 选项 | 含义 |
|---|---|
| --lost-found | write dangling objects into .git/lost-found |
| --unreachable | list objects no ref points at |
| --dangling | list objects nothing at all refers to |
| --full | check packs and alternates too |
| --connectivity-only | skip the expensive object checks |
| --no-reflogs | do not treat reflog entries as roots |
示例
git fsck --lost-foundrecovers commits after a reset when the reflog is gone
git fsck --unreachablelists commits nothing points at any more
git fsck --connectivity-onlya quick structural check on a huge repository
难的地方在于撤销有好几种:把分支的指向挪走,和补一个反向提交,不是一回事。
怎么看
- 方括号 [ ] 表示这部分可以不写。
- 省略号 … 表示可以写多个。
- 选项区分大小写——有些命令里 -r 和 -R 不是一回事。
常见问题
Q. git fsck 是做什么的?
检查对象库并列出没有任何引用指向的提交,这是 reflog 条目也没了之后找回被 reset 弄丢的工作的第二条路;它只报告,不修复。
Q. 怎么写?
git fsck [--lost-found] [--unreachable] —— 方括号表示可以省略的部分。
Q. 值得记的选项有几个?
这里列了 6 个,完整列表在 man git。这条命令属于git。
相关命令
man 手册: man git-fsck