Git 히스토리 삭제
GitLab의 저장소가 private라 기밀 정보가 들어간 application.propeties 파일을 넣으면서 작업했더니 나중에 Github로 미러링할 때 문제가 되었다. (기밀 정보는 넣지 말자)
단순히 application.propeties 파일을 삭제하면 안된다. Git은 파일을 삭제하지 않는 구조일 뿐만 아니라 히스토리, 즉 이전 커밋들에 포함되어 있기 때문이다.
(더 상세하게 표현하면 커밋의 트리 파일에 기밀 정보가 포함된 application.propeties에 해당하는 blob 객체가 포함되어 있기 때문)
아래 명령어를 실행하자. 아래의 명령어는 지정한 파일 또는 폴더를 모든 브랜치와 태그에서 제거하고, 그 과정에서 비어 있는 커밋을 삭제한다. 이 명령어를 사용할 때는 저장소의 히스토리를 재작성하기에 주의해서 사용해야 한다.
git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch <파일 경로>' --prune-empty --tag-name-filter cat -- --all
이 후 아래의 명령어로 강제로 원격 저장소에 push 한다.
git push origin --force --all
'CM > Git' 카테고리의 다른 글
Git 원격 저장소 (0) | 2022.08.04 |
---|---|
Git branch (0) | 2022.08.01 |
Git 원리 (add,commit,status) (0) | 2022.08.01 |
Git 기초 (0) | 2022.07.31 |