[GIT] Commit History 모든 파일 삭제하기
- GIT
- 2018. 11. 7.
상황
넌 추적되지 말았어야 했어
GIT 을 쓰다보면, 나도 모르게 추적되고 있던 파일들이 있을 수 있다.
대표적으로 config.json
과 같이 DB 접속 정보(ID, PW) 등이 담겨있다거나, 심지어는 key 가 git history 상에 올라가 있는 경우가 있다.
뒤늦게 해당 파일을 .gitignore
에 추가시켜 track
을 피해보지만,
그동안의 commit history 상에 config.json
과 같은 파일들이 올라가 있어서,
누구나 과거의 commit 으로 checkout 만 하면 숨겨져야할 내용을 열람할 수 있게 된다.
해결 방법
결론부터 말할게
filter-branch
라는 명령어를 사용하면, 우리가 원하는 파일을 삭제할 수도, 변경할 수도 있다.
그것도 모든 commit 에서 한번에!
(아래 하이라이트 된 password.txt 는 폴더가 될 수도 있다.)
현재 branch 의 모든 history 에 대해 commit 된 파일 제거
$ git filter-branch --tree-filter 'rm -f passwords.txt' HEAD
모든 branch 의 history 에 대해 commit 된 파일 제거
$ git filter-branch --force --index-filter /
'git rm --cached --ignore-unmatch passwords.txt' /
--prune-empty --tag-name-filter cat -- --all
적용사항 확인
현재 위치한 commit 의 대상파일 확인(추적대상 확인)
$ git ls-tree -r HEAD
해당 브렌치의 추적사항 (마지막 커밋을 기준으로)
$ git ls-tree -r master
자세한 설명은 아래에서
filter-branch
에 대해서는
자세한 내용은 링크 를 참고하자. (git-scm.com)
Reference
http://better-today.tistory.com/22 [간단하게]
http://minsone.github.io/git/github-advanced-remove-sensitive-data [자세하게, 민감한 데이터 제거하기, 원격저장소 관리까지]
반응형