본문 바로가기

Dev/Git

Git 리파지토리에서 파일 완전 삭제

git 형상을 관리하다보면 실수로 넣지 말아야할 파일(민감정보가 들어간 설정파일이라거나..)들이 들어간뒤 remote에 push될 때가 있다. 이경우 해당 파일을 삭제하고 git내의 형상 로그에서 모두 지우고 remote 서버에까지 반영하고 싶을때 다음의 명령을 따른다.

# foldername이라는 폴더를 모두 지우고 관련된 커밋 메시지도 처리.
> git filter-branch --tree-filter 'rm -rf ./foldername' HEAD
Rewrite ffc820911941f31ef6433439c6e582be2f87627d (99/103) (5 seconds passed, remaining 0 predicted)    
Ref 'refs/heads/master' was rewritten
# 해당 브랜치의 백업때문에 repository의 commit이나 특정 명령어가 안될수 있음. 아래의 명령어 실행
> git update-ref -d refs/original/refs/heads/master 
# remote에는 force push한다.
> git push origin master --force