프로젝트 중 팀원 한분이 개인 s3 시크릿 키를 메인 브랜치에 커밋해버린 문제가 생겼다.
파일을 지우더라도 커밋 기록에 시크릿 키가 남게 되면 해커들의 공격으로 해킹될 문제가 있을 수 있다고 들었다.
커밋 기록을 지워버려야 하기 때문에 revert를 이용해서 커밋을 되돌아갔다가 수정해서 다시 커밋해서 올렸는데 파일은 없어졌지만, 커밋 기록은 계속 남아 있었다.(아마 제대로 안 된 거겠지? 모르겠다.)
해결이 안 돼서 레포를 다시 파야하나, s3를 다시 생성해야 하나 등 여러 방법을 생각했지만, 모두 최후의 수단이었고, 커밋 기록만 지우는 방법을 찾기로 했다.
같이 블로그를 뒤져가면서 기록 삭제하는 법을 찾아서 적용해서 해당 커밋 내의 내용을 지울 수 있었다.
해결 방법으로는 아래와 같이 코드로 어떤 파일에 대한 기록을 지울 건지 코드로 작성해서 적용하는 것이다.
git filter-branch --force --index-filter "git rm --cached --ignore-unmatch 'file_path/file_name'" --prune-empty --tag-name-filter cat -- --all
file_name에는 지우고 싶은 파일 이름과 확장자까지 넣어주고,
file_path는 지우고 싶은 파일의 경로를 넣어준다.(경로는 root부터 전부 다 작성한다.)
우리는 config폴더의 s3config.json을 지우기 위해 아래와 같이 입력했다.
git filter-branch --force --index-filter "git rm --cached --ignore-unmatch './config/s3config.json'" --prune-empty --tag-name-filter cat -- --all
터미널에서 입력하면 해당 파일의 기록이 지워진다.
그 후 새로 만들어진 커밋 기록을 강제로 적용한다.
git push origin master --force
다시 한번 깃허브에 커밋할 땐 개인 시크릿키 유무를 확인하고, 꼭 env, gitignore를 활용하자!
'coding > IT, CS' 카테고리의 다른 글
이진 탐색법 (0) | 2022.11.15 |
---|---|
postman api DOCS 링크 공유 (0) | 2022.11.11 |
TCP / UDP (0) | 2022.09.04 |
http 상태코드 (0) | 2022.08.31 |
http https (0) | 2022.08.19 |