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

fever·2024년 6월 15일
1

때는 오늘 새벽...다급한 연락이 왔다.

누군가 올려서는 안 될 파일을 git에 올렸다는 것...
설마설마 하고 봤더니, 영화 api의 키와 시크릿이 다 올라가 있었다 ㅠㅋㅋㅋ
그래서 해당 파일을 지우고, 내역도 함께 삭제 하기 위해 이곳저곳 서칭하다 찾은 방법...

git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch 파일경로' --prune-empty -- --all

git filter-branch Git의 명령어 중 하나로, 지정된 조건에 맞는 커밋들을 재작성

--force 필터링 작업을 강제로 실행하는 옵션으로 이미 작업한 내용이 있다면 덮어씀

--index-filter 각 커밋을 재작성할 때 실행할 명령어를 지정하는 옵션

git rm --cached --ignore-unmatch 파일경로 해당 경로의 파일을 모든 커밋에서 삭제

--cached 인덱스(Staging Area)에서만 삭제하고, 실제 작업 디렉토리에서는 삭제하지 않음 (중요)

--ignore-unmatch 파일이 존재하지 않아도 오류를 발생시키지 않고 계속 진행
--prune-empty 필터링 후 생성된 빈 커밋(모든 변경 사항이 삭제된 경우)을 제거하는 옵션
-- --all 필터링 대상으로 모든 브랜치의 커밋 히스토리를 지정 (모든 브랜치 적용)

원격저장소의 작업 파일은 지키되 파일과 히스토리에서 application만 삭제하기 위해 사용했다!
참고로 해당 명령어 이후에 git push origin --force --all로 강제 푸시를 해야지만 적용되니 꼭 강제 푸시 갈기기! (물론, 안전한 진행을 위해 브랜치 복사도 잊지 말자.)

profile
선명한 삶을 살기 위하여

1개의 댓글

comment-user-thumbnail
2024년 6월 15일

퍼가요 ~~

답글 달기