coding/IT, CS

github 커밋 히스토리 삭제

JIN_Coder 2022. 9. 12. 21:41

프로젝트 중 팀원 한분이 개인 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를 활용하자!

 

 

 

 

atomic0x90(Yujun Han)

c와 c++ 를 사용하는 방법 설명 / 백준 온라인 저지 문제 풀이를 설명 / 나만의 프로그래밍 개발 일지 / 개발하면서 알게되는 것들을 저장하는 공간

atomic0x90.github.io

 

'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