Git

[Git] 특정 파일에 대한 히스토리 삭제하기

도트7 2023. 11. 1. 04:37

 안드로이드 프로젝트를 진행하던 중 로그인 테스트 과정에서 더미 데이터가 아닌 진짜 데이터를 넣어서 테스트했었는데 실수로 그대로 커밋해버렸다. 레포지토리를 삭제하고 다시 생성하기엔 너무 멀리 온 것 같아서 이 파일에 대한 히스토리만 삭제할 수 없을까 구글링을 해서 방법을 찾았다.

 

 

 

특정 파일의 history 삭제

 commit, push된 특정 파일의 히스토리를 모두 삭제할 것이다. 프로젝트 폴더에서 우측 클릭, git Bash를 실행한다.

 

 

git filter-branch -f --index-filter 'git rm --cached --ignore-unmatch {path or fileName}' --prune-empty -- --all

 cmd에서 위 명령어를 실행하는데 {path or fileName} 부분을 삭제하고자 하는 파일 이름으로 치환한다. 

 

 

 잘 모르겠다면 GitHub에서 삭제하고자 하는 파일까지 찾아서 들어간 뒤 우측 버튼을 누르면 경로가 복사되니 그대로 붙여넣어 사용하면 된다. 개인적으로 경로를 입력하는 부분에서 삽질을 많이 했는데 잘 모르겠으면 복붙하는게 제일 확실하게 먹히는 것 같다.

 

 

 모자이크 투성이지만 git이 익숙하다면 어렵지 않게 알아볼 수 있을 것이다. 삭제할 파일 경로와 함께 명령어를 실행하면 경고 문구와 함께 삭제가 진행된다. 

 

 

git push origin master --force

 삭제가 완료되면 변경 내용을 강제로 원격 저장소에 push 해주면 된다.

 

 

 이제 GitHub에 들어가서 해당 파일이 존재하는지 확인한다. 파일이 삭제되어 있다면 성공한 것이다. 이제 불필요한 데이터를 제외한 후 다시 commit, push 해주면 된다.