새벽에 git에 올라가면 절대 안되는 api 주소와 토큰이 올라갔다는 연락을 받았다.
에러 찾기에 나섰다...
git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch [src/main/test.txt]' --prune-empty -- --all
git filter-branch Git의 명령어 중 하나로, 지정된 조건에 맞는 커밋들을 재작성
--force 필터링 작업을 강제로 실행하는 옵션으로 이미 작업한 내용이 있다면 덮어씀
--index-filter 각 커밋을 재작성할 때 실행할 명령어를 지정하는 옵션
git rm --cached --ignore-unmatch 파일경로 해당 경로의 파일을 모든 커밋에서 삭제
--cached 인덱스(Staging Area)에서만 삭제하고, 실제 작업 디렉토리에서는 삭제하지 않음 (중요)
--ignore-unmatch 파일이 존재하지 않아도 오류를 발생시키지 않고 계속 진행
--prune-empty 필터링 후 생성된 빈 커밋(모든 변경 사항이 삭제된 경우)을 제거하는 옵션
-- --all 필터링 대상으로 모든 브랜치의 커밋 히스토리를 지정 (모든 브랜치 적용)
원격저장소의 파일은 지키되 히스토리에서 test.txt 파일만 삭제하기 위해 사용했다.
참고로 해당 명령어 이후에 git push origin --force --all로 강제 푸시를 해야지만 적용되니 꼭 강제 푸시하도록 하자 (물론, 안전한 진행을 위해 브랜치 복사도 잊지 말자.)