[Git] 잘못 올린 파일 커밋, 히스토리 삭제 하는 방법

차곡차곡·2024년 6월 15일
0

새벽에 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로 강제 푸시를 해야지만 적용되니 꼭 강제 푸시하도록 하자 (물론, 안전한 진행을 위해 브랜치 복사도 잊지 말자.)

profile
계단식 성장

0개의 댓글