본문 바로가기
Develop/React Native

github 잘못 올라간 파일 히스토리까지 삭제하기

by 구운밤이다 2020. 3. 3.
728x90
반응형

잘못해서 깃허브에 암호 파일이라던지, env 파일을 올려 난감한 상황에 처할 때가 있습니다. 저도 최근 .pem 파일을 push 해서 난처한 상황에 처하고 말았는데요. 이렇게 푸시까지 이루어진 상황에선 히스토리가 남아 지우더라도 기록이 남게 되어 보안상의 이슈가 발생하게 됩니다. 

 

Build software better, together

GitHub is where people build software. More than 40 million people use GitHub to discover, fork, and contribute to over 100 million projects.

github.com

.git 폴더를 지우고 새로 git init 을 통해 다시 레포를 정리하라는 글도 많았지만 열심히 구글링하며 찾아보니, 다행히도 이럴 때를 대비하여 사용할 수 있는 git 명령어가 있는데요. git filter 명령어입니다. 이 명령어를 사용하면 해당 파일을 git 전체 히스토리에서 필터링해여 재작성해줍니다.

$ git filter-branch -f --index-filter 'git rm --cac
hed --ignore-unmatch [파일 이름과 위치]' --prune-empty -- --all

안에 git rm --cached 는 리모트 브랜치에 있는 해당 파일을 정리해줍니다. 위 파일 이름과 맞지않는 파일들은 무시한채로 해당 파일만 원격 브랜치에서 삭제해주는거죠. 여기서 중요한 게 파일명만 적어주면 안됩니다. 파일 위치와 이름을 같이 적어줘야 작동하더라구요.

$ git push origin [브랜치 명] --force

이후 브랜치가 재작성 되면 원격 저장소와 로컬 저장소의 브랜치가 서로 나뉘어 있습니다. 위 명령어를 통해 강제로 push 해주어 로컬 브랜치를 원격 브랜치로 넣어주면 됩니다! 모든 브랜치를 재작성했기 때문에 브랜치별로 다 해야되더라구요. 하나하나 브랜치 명을 적어주며 마무리하면 깔끔하게 정리할 수 있습니다!

마지막으로 이 작업이 끝나셨다면 .gitignore 파일에 해당 파일을 등록해 놓는 것이 좋겠죠? 저처럼 .pem 파일같은 경우엔 *.pem 이라고 .gitignore에 등록해두면 다음 번에 다시 잘못 올라가는 위험을 방지할 수 있습니다.

728x90
반응형

댓글