여기서 고립한다는 것은 어떤 명령어로도 해당 객체에 접근할 수 없어야 한다는 의미입니다. 하지만 이전에 우리는 해시 값을 사용하여 리셋으로 삭제한 커밋으로 체크아웃한 경험이 있습니다. 체크아웃할 수 있다는 것은 아직 객체에 접근이 허용된다는 의미입니다.
깃은 참조된 모든 객체의 연결 고리를 reflog에 이중으로 기록합니다. reflog는 깃에서 참조된 모든 객체의 기록을 일정 기간 유지하는 역할을 합니다. 리셋 명령만으로는 객체와 연결한 모든 고리를 완벽하게 제거할 수 없다는 것입니다.
▼ 그림 12-14 기록
prune 명령어를 실행하려면 완벽하게 고립된 객체여야 합니다. 따라서 reflog에 기록된 연결 고리 링크도 같이 제거해야 합니다. reflog는 일정 기간이 지나면 자동으로 없어지지만, 실습을 위해 연결 고리를 직접 제거해 보겠습니다.
infoh@DESKTOP MINGW64 /e/git-prune (master)
$ git reflog expire --expire=now --expire-unreachable=now --all reflog 삭제