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)