12.5.1 가비지
가비지(garbage)는 동적인 언어에서 메모리를 관리하려고 생성한 개념입니다. 깃은 이력을 추적할때 객체의 생성과 변경을 반복합니다. 여러 번 처리 동작을 반복하면서 시간이 지남에 따라 연결 고리가 없는 고립된 객체들이 생겨 비효율적인 자원 상태가 됩니다.
고립된 객체들은 대표적으로 리셋(reset) 또는 리베이스(rebase) 등을 자주 할 때 발생합니다. 연결 고리가 없는 객체들은 불필요하며, 용량만 차지하므로 정리해 주는 작업이 필요합니다.
깃의 커밋은 생성된 객체의 연결 고리를 설정하는 동작입니다. 커밋을 변경하면 새로운 객체로 연결 고리를 재설정합니다. 하지만 기존에 연결된 객체들은 삭제하지 않고 유지합니다. 이러한 과정에서 불필요한 가비지가 생성됩니다. 이처럼 객체는 향후 수동으로 커밋을 복구할 때 사용할 수 있기 때문에 유지합니다.