git fsck
git fsck
命令用于检查 Git 数据库内部的完整性,找出问题对象。这3个选项具体用法如下:
git fsck --dangling
:
显示悬空对象(dangling object),即孤立的提交/树/blobs,不被任何其他对象引用。git fsck --unreachable
:
显示不可达对象(unreachable object),即不可到达的对象,不被任何一个分支或标签引用。git fsck --lost-found
:
显示遗失的对象(lost found), 位于.git/lost-found/
其他 commit 引用了的对象。
总结:
dangling
对象不被任何对象引用,但仍在数据库中。unreachable
对象不被任何分支或标签引用,可能在重写历史后出现。lost-found
对象被其他 commit 引用,但不在当前分支或标签中。
这3个选项可以帮助我们发现和恢复在重写历史时“丢失”的对象,修复问题。
git log
示例命令: git log --format="hash: %H%nauthor: %an%ndate: %aI%n%n%B"
--fromat
参数解释:
%H
- commit hash (hash 值)%an
- author name (作者用户名)%aI
- author date, ISO 8601 格式 (提交时间)%B
- commit message body (提交信息)%n
- 换行符
实际应用
显示不可达的Commit信息
git fsck --unreachable | grep commit | cut -d' ' -f3 | xargs -I {} git log --format="hash: %H%nauthor: %an%ndate: %aI%n%n%B" -n 1 {}
评论 (0)