etc/흥미로운 것

[git] git 특정 커밋에 대한 파일 삭제하기

hojak99 2018. 5. 15. 01:43

지금 흐르는 눈물을 닦으며 포스팅 중이다. 실수로 리얼 중요하고 시크릿한 파일을 깃헙에 올렸는데 그걸 모르고 나는 푸쉬하고~ 풀하고 개ㅈㄹ을 해서 딱 커밋 목록 중간에 그 시크릿 파일이 올라가는 커밋이 있었다.


우선 눈물 한방울 찔끔 흘리고 시작했다.


우선 구글링을 해보니 다음과 같은 명령어로 모든 커밋 로그에 있는 파일들을 삭제할 수 있다고 한다.


git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch 파일명' --prune-empty --tag-name-filter cat -- --all


참고로 "파일명"에는 폴더가 아닌 특정 확장자를 가진 파일명을 입력해야 한다. 

예를 들어 "config/password.json" 이런 식으로 해야한다.


그러면 이제 천천히 시작된다.


[사진 1: 커밋 로그에 올라온 파일 삭제 사진]



후,, 우선 뭔가 삭제되고 있다는 것 같다.


그리고 마지막으로 push 를 해주면 되는데 꼭 올리지 말아야 할 시크릿 파일은 gitignore 에 추가해서 커밋 후 푸쉬를 진행하도록 하자.


git push origin master --force


강제로 푸쉬를 하면 모든 브랜치들에 대한 커밋 로그 중에서, 위에서 삭제하려고 한 파일들이 사라진 것을 볼 수 있다.


정말 조심하자,,

반응형