[Git] 잘못 한 커밋 기록 삭제하기

권지은·2025년 8월 6일

[개인 공부] Git

목록 보기
1/1
post-thumbnail

작업을 하다 보면 .gitignore에 추가했어야 했는데 뒤늦게 알아차리는 경우가 종종 있죠.
저도 이미 푸쉬해버린 커밋들에 섞여있는 나의 json 파일들을 발견하고 말았습니다.

.gitignore : 사전 방지

이렇게 작성해 두면 커밋에서 파일들은 무시됩니다.
만약 경로 아래에 있는 파일들 전체를 무시하길 원한다면,
루트 기준 해당 파일 경로를 작성해 주면 됩니다.

/파일이름/

# 예시
/config/

하지만 이미 커밋해버린 상황...

브랜치를 들여다 보면 아래처럼 이미 쏙쏙 박혀있는 경우가 있죠

보통 이런 건 한 커밋에만 있는 게 아니죠, 그 전 커밋... 그 이후 커밋... 다 있어요.

해결 방법

  1. 현재 파일 백업 (선택)
# 새로 클론 받아두기
git clone https://github.com/your-github/your-repository.git your-repository-clean
cd your-repository-clean

# 새로 브랜치 백업
git checkout main #또는 대상 브랜치
git branch backup-before-config-clean
  1. git-filter-repo 설치
pip install git-filter-repo
  1. 레포지토리 클린업
# 맞는 프로젝트인지 경로 확인 후 작업 your-repo-clean
git filter-repo --path 해당-폴더-이름/ --invert-paths

--path 파일이름/ : 경로 디렉터리 안에 있는 모든 파일을 대상으로 함
--invert-paths :해당 경로만 제거하고 나머지는 유지함

  1. 강제 푸시
git push origin --force --all
git push origin --force --tags
  1. .gitignore에 추가
/디렉토리/

번외) 지금 디렉토리에서 강제 실행

git filter-repo --force --path config/ --invert-paths
  • 히스토리 손상 가능성 있음 : 백업 꼭 하고 진행할 것

살아나세요 용사여

profile
하고 싶은 거 하면, 할 수 있게 되는 매직

0개의 댓글