여태 민감한 정보가 담긴 application.yml 설정 파일을 포함시킨채로 git에 commit을 했다.
문제의 파일을 .gitignore에 추가하고 cash를 날려주니 최신 커밋에서는 더 이상 문제의 파일이 보이지 않는다.
그러나 문제는 과거 커밋들에는 여전히 해당 파일이 존재한다는 것이다.
누구나 history를 통해 문제의 파일에 접근이 가능한 상태이다.
다행히 git에는 모든 커밋에서 특정 파일을 지울 수 있는 git filter-branch 명령어가 존재했다.
git filter-branch --tree-filter 'rm -f 파일경로/파일이름' HEAD
이때 파일의 경로를 정확하게 지정해 줘야 정상적으로 작동한다.
ex) src/main/resources/application.yml
ex) *.yml (모든 폴더 내의 yml 파일 삭제)
만약, 오류가 발생한다면 현재 작업중인 디렉토리의 경로가 프로젝트의 루트 디렉토리가 맞는지 확인한다.
파일의 경로는 프로젝트의 루트 디렉토리 기준으로 상대 경로로 지정되어야 하기 때문이다.