Git을 사용하다 보면 .gitignore 파일에 새 규칙을 추가했는데도 무시하도록 설정한 파일이 여전히 "git commit" 스테이징 영역에 계속 나타나는 경우를 자주 겪게 됩니다. 이런 문제가 발생했을 때 가장 효과적인 해결 방법은 Git 캐시를 정리하고 초기화하는 것입니다. 이 가이드에서는 Git 캐시를 지우는 방법을 소개합니다. 본격적으로 시작하기 전에 Git 캐시가 무엇인지, 어떤 역할을 하는지, 그리고 캐시를 비우면 어떤 장점이 있는지 간단히 살펴보겠습니다.
Git 캐시란 무엇인가?
Git 캐시는 '스테이징 영역(staging area)' 또는 '인덱스(index)'라고도 불리며, 작업 트리(working tree)와 저장소(repository), 커밋, 브랜치 등 "git commit" 명령을 실행하는 시점에 커밋될 내용이 담겨 있습니다.
캐시를 활용하면 커밋하기 전에 작업 트리에서 원하는 변경 사항만 선택적으로 반영하거나, 최신 커밋만 다운로드하고 나머지는 캐시에 저장해 두는 방식으로 작업 효율을 높일 수 있습니다.
만약 Git 캐시가 없다면 커밋 과정에서 변경 사항이 작업 트리로 되돌아가는 등 불편한 상황이 발생하고, 다음 커밋에서 일부 변경 사항만 다시 커밋해야 하는 번거로움이 생깁니다.
Git 캐시의 역할
스테이징 영역(인덱스)의 핵심 목적은 성능 향상입니다. 충돌이 발생하는 커밋 병합을 처리하고, 의존성 패키지, 라이브러리 등 다양한 콘텐츠를 매번 다시 다운로드해야 하는 상황을 최소화하여 전반적인 작업 속도를 개선합니다.
Git 캐시 위치 확인 방법
Git 캐시는 .git 디렉터리 안에 있는 index라는 이름의 파일에 저장됩니다.
캐시 파일을 찾으려면 먼저 아래 명령어로 .git 디렉터리의 위치를 확인한 후, cd 명령어로 해당 디렉터리로 이동합니다:
git rev-parse --git-dir cd .git
디렉터리에 진입했다면 ls 명령어로 index 파일을 확인할 수 있습니다:
ls –la
파일 정보를 자세히 보려면 file 명령어를 사용하세요:
file index
이 명령을 실행하면 파일 유형, 버전, 그리고 Git 캐시 파일에 포함된 항목 수가 출력됩니다.
index: Git index, version 2, 5 entries
Git 캐시 파일 삭제하기
Git 캐시에서 특정 파일만 제거하려면 git rm 명령어 뒤에 해당 파일명을 붙여 실행합니다.
디렉터리 전체를 재귀적으로 제거하려면 git rm 명령어에 -r 옵션을 함께 사용합니다.
기본 명령어 형식은 다음과 같습니다:
git rm --cached filename
filename 부분을 캐시에서 제거하려는 실제 파일명으로 바꿔 주세요.
예를 들어 "mte-info.c" 파일을 제거하려면 다음과 같이 입력합니다:
git rm --cached mte-info.c
그다음 아래 명령어로 파일이 성공적으로 제거되었는지 확인합니다:
file .git/index
참고: git rm --cached filename 명령은 파일을 작업 디렉터리에서 삭제하는 것이 아니라 스테이징 영역에서만 제거합니다.
반면 캐시와 스테이징 영역 전체를 한 번에 비우려면 git rm 명령어에 재귀 옵션 -r을 사용합니다:
git rm -r --cached
마무리
이번 튜토리얼에서 배웠듯이 Git 캐시를 비우는 작업은 생각보다 간단합니다. 여기에 더해 Git alias를 활용하는 방법도 익혀두면 Git을 훨씬 더 효율적으로 사용할 수 있습니다.