과거 커밋에 잘못 포함된 파일 제외하기(git cherry-pick)

Kangjik Kim·2025년 3월 27일
0

작업을 하던 도중 HEAD보다 세 개 전의 커밋에서

버전 관리가 필요하지 않은 파일이 포함됐다.

미리 gitignore에 등록을 했다면 발생하지 않았을 문제이지만,

저질러졌을 경우 해결하는 방법을 기록하고자 한다.

  1. 먼저 현재 상태를 백업한다. (혹시 모를 상황에 대비)
git branch backup-branch
  1. 제외하고 싶은 파일이 있는 커밋 이전으로 돌아갑니다 (문제가 발생한 3개 전의 커밋 이전인 4개 전의 커밋으로 이동)
git reset --hard HEAD~4
  1. 이제 문제의 커밋부터 현재까지 모든 커밋을 하나씩 cherry-pick하면서 진행한다.
git cherry-pick -n 문제_커밋_해시

(-n 옵션은 자동으로 커밋하지 않고 변경사항만 스테이징 영역에 추가한다.)

  1. 스테이징 영역에서 제외하고 싶은 파일을 제외한다.
git reset HEAD 제외할_파일_이름
  1. 나머지 파일을 커밋한다.
git commit -m "원래 커밋 메시지"
  1. 나머지 커밋들도 순서대로 cherry-pick한다.
git cherry-pick 다음_커밋_해시
git cherry-pick 그다음_커밋_해시
...
  1. (선택) 이미 push를 했던 경우 모든 작업이 끝나면 변경된 히스토리를 원격 저장소에 강제로 푸시한다.
git push --force

0개의 댓글