Git 특정 파일 이력 완전 삭제
등록일: 2026-05-07
본 문서는 개인정보가 포함된 특정 파일을 Git 커밋 히스토리에서 완전히 제거하고 원격 저장소를 재구성하는 절차를 설명함.
1. 사전 준비 (도구 설치)
시스템 파이썬 환경을 보호하면서 독립적으로 CLI 도구를 실행하기 위해 pipx 사용을 권장함.
# pipx 설치 (Ubuntu/Debian 기준)
sudo apt update
sudo apt install pipx
pipx ensurepath
# 터미널 재시작 또는 설정 반영
source ~/.bashrc
# git-filter-repo 설치
pipx install git-filter-repo
2. 파일 이력 제거 작업
git-filter-repo는 과거의 모든 커밋 스냅샷을 훑으며 지정된 파일의 기록을 삭제하고 커밋 ID를 재구성함.
- 대상 파일 경로:
docs/dev/ai/Ollama-Open-WebUI-최적화-가이드.md - 실행 명령어:
# 로컬 저장소 루트 경로에서 실행
git-filter-repo --path docs/dev/ai/Ollama-Open-WebUI-최적화-가이드.md --invert-paths --force
옵션 설명:
--path: 삭제 대상 파일의 상대 경로.--invert-paths: 해당 경로를 제외한 나머지 모든 파일로 이력을 재구성함.--force: 신규 클론 저장소가 아닐 경우에도 강제 실행함.
3. 원격 저장소 재연결 및 동기화
이력 재구성이 완료되면 기존의 원격(Remote) 연결 정보가 삭제되므로 다시 등록해야 함.
# 원격 저장소 다시 등록
git remote add origin https://github.com/sleepzzzzz/vault.git
# 변경된 이력을 원격 저장소에 강제 푸시 (전체 브랜치 대상)
git push origin --force --all
# 태그가 있을 경우 태그도 강제 푸시
git push origin --force --tags
4. 사후 조치 및 주의사항
- 민감 정보 무효화: 이미 원격지에 Push되었던 데이터는 누군가(혹은 자동화된 봇)에 의해 탈취되었을 가능성이 있으므로, 해당 파일에 포함되었던 API Key, Password 등은 반드시 즉시 변경 또는 재발급 받아야 함.
- 협업자 알림: 혼자 사용하는 저장소가 아닐 경우, 이력 재구성 후 다른 팀원들은 기존 로컬 저장소를 폐기하고 새로
git clone을 받아야 함. - 캐시 삭제: GitHub 등 서비스에서 커밋 ID 직접 접근 시 캐시된 내용이 보일 수 있음. 필요시 서비스 지원팀에 캐시 삭제를 요청함.
작성일: 2024-05-22 도구: git-filter-repo