[Git] fsck - Joohee-Moon/study GitHub Wiki

1. fsck

Verifies the connectivity and validity of the objects in the database

git fsck 명령으로 데이터베이스의 Integrity를 검사할 수 있다.

옵션 없이 fsck 명령 입력할 경우, 삭제한 브랜치의 commit object가 나오지 않는다.

1.1. --no-reflogs

e.g.) git commit --amend후 unreachable object를 확인하면 이전 commit 확인 가능

1.1. --unreachable

reference 노드(reflog포함)에서 도달할 수 없음을 의미

unreachable object의 확인

--no-reflogs와 함께 사용하면 사라진 브랜치를 확인할 수 있다

git fsck --unreachable --no-reflogs Checking object directories: 100% (256/256), done. unreachable blob e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 unreachable commit 984957a17d27b0984f0b390c8a50f639698f4d7f unreachable commit d9fe5bf153fb37e14698c76a83b8c2e93ce2f1cf --dangling

만들어지기는 했으나, 직접 사용된(참조된) 적이 없는 object

git fsck --dangling --no-reflogs Checking object directories: 100% (256/256), done. dangling blob e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 dangling commit d9fe5bf153fb37e14698c76a83b8c2e93ce2f1cf 984957a17d27b0984f0b390c8a50f639698f4d7f의 경우 자식이 있으므로 dangling에서 제외된다 --full .git/object 뿐만 아니라 packed object, GIT_ALTERNATE_OBJECT_DIRECTORIES를 모두 검색함