만료된 Reflog 항목 테스트
이 단계에서는 Git 이 reflog 를 관리하는 방법과 항목이 결국 만료될 수 있는 방법에 대해 알아보겠습니다. 기본적으로 Git 은 일정 기간 동안 reflog 항목을 보관합니다. 접근 가능한 항목 (브랜치 또는 태그가 가리키는 항목) 은 90 일 동안 보관되고, 접근 불가능한 항목 (아무것도 가리키지 않는 항목) 은 30 일 동안 보관됩니다. 이러한 기간이 지나면 Git 의 가비지 수집 프로세스가 해당 항목을 제거할 수 있습니다.
이 랩에서는 항목이 자연스럽게 만료되는 것을 보기 위해 시간의 흐름을 시뮬레이션할 수 없지만, 오래된 reflog 항목을 정리 (제거) 하기 위해 특정 옵션으로 Git 의 가비지 수집을 수동으로 트리거할 수 있습니다.
중요: 이 명령을 실행하면 구성된 만료 시간을 기준으로 오래된 reflog 항목이 제거됩니다. 실제 시나리오에서는 오래된 reflog 항목을 정리해야 하는 특별한 이유가 없는 한 일반적으로 이 작업을 수동으로 실행할 필요가 없습니다.
먼저, my-time-machine 디렉토리에 있는지 확인합니다.
cd ~/project/my-time-machine
이제 reflog 항목에 대한 정리 옵션으로 가비지 수집 명령을 실행해 보겠습니다. 접근 불가능한 항목에 대해 매우 짧은 만료 시간을 설정하여 효과를 시연해 보겠습니다.
git gc --prune=now --aggressive
이 명령은 Git 에게 가비지 수집을 즉시 실행 (--prune=now) 하고 공격적으로 (--aggressive) 느슨한 객체를 정리하고 접근 불가능한 reflog 항목을 정리하도록 지시합니다.
명령을 실행한 후, reflog 를 다시 확인해 보겠습니다.
git reflog
이 랩 전에 더 많은 작업을 수행했다면, 일부 오래된 항목이 사라졌을 수 있습니다. 두 개의 reflog 항목만 있는 간단한 저장소에서는 두 항목 모두 비교적 새롭고 하나는 여전히 HEAD 및 master에 의해 접근 가능하기 때문에 여전히 존재할 수 있습니다. 그러나 접근 불가능한 커밋이 있는 더 복잡한 히스토리가 있는 경우, 이 명령은 만료 설정을 기반으로 해당 항목을 정리합니다.
여기서 핵심은 reflog 가 영구적이지 않다는 것입니다. Git 은 공간을 절약하기 위해 오래된 항목을 정리합니다. 그러나 일반적인 개발 워크플로우의 경우, 기본 만료 시간은 대부분의 실수로부터 복구하기에 충분합니다.
reflog 항목에 만료가 있다는 것을 이해하면 프로젝트 히스토리의 중요한 지점을 보존하기 위해 의미 있는 커밋과 브랜치를 생성하는 것의 중요성을 인식하는 데 도움이 됩니다.