비공개로 작업하던 레포 공개로 전환하기 위해 스크릿 파일 삭제하기
상황
- 리액트 스터디가 끝났다..!
- 스터디하면서 github에 비공개 레포로 진행했었는데
- 스터디를 끝내면서 공개로 전환하기로 했다
- 하지만 공개로 전환하기 전에 aws를 사용하면서 저장해둔 rds 접속 정보 등 시크릿 파일을 제거해야 한다
- 히스토리에서도 완전히 삭제하는 것을 목표로 한다
시도1 ; git filter-branch
- https://docs.github.com/en/github/authenticating-to-github/removing-sensitive-data-from-a-repository#using-filter-branch
- 위 문서를 보니까
git filter-branch
를 사용한다
1 | git filter-branch --index-filter 'git rm --cached --ignore-unmatch utils\rdsSecret.ts' HEAD |
- 명령을 실행하니까
filter-repo
를 사용하라고 했다
시도2 ; git filter-repo
- https://github.com/newren/git-filter-repo/blob/main/INSTALL.md
- git filter-repo는 파이썬이 필요하므로, 파이썬이 설치가 안되어있다면 설치하자
- 나는 윈도우를 쓰고 있는데, 윈도우에서 인스톨할 때 주의사항이 있었다
- scoop을 통해 설치하면 문제없다 하여 scoop을 설치한다
scoop 설치 및 filter-repo 설치
- https://scoop.sh/
- scoop은 윈도우용 커맨드 라인 인스톨러라고 한다
- 설치를 위해 파워쉘을 관리자 권한으로 실행하고 다음을 실행한다
1 | # scoop 설치 |
filter-repo로 git history 속 민감한 정보 삭제하기
1 | git filter-repo --invert-paths --path utils/rdsSecret.ts |
README.md
에 민감한 정보가 있는 경우, 기존 내용을 복사했다가- 명령어로 히스토리에서 제거하고,
- 다시 파일을 생성하고 민감한 정보를 없애고 새로 커밋을 해주었다
- 이 작업을 진행하면 리모트 주소가 삭제되는데,
git remote add {레포 주소}
한다
주의사항
- 작업을 진행하기 전에 백업 레포를 하나 생성하자
--path
경로 작성할 때,\
로 작성하면 안 되고/
로 작성해야 한다- 제거하고자 하는 파일을 이름을 변경한 적이 있던가,
- 폴더를 이동했었으면 이전의 내역까지 완전히 사라지지 않는다
- 그래서 수동으로 하나씩 찾아서 해줘야 한다
- sourcetree에서 히스토리 검색을 통해서 꼼꼼히 체크하여 삭제를 진행한다
참고
- https://docs.github.com/en/github/authenticating-to-github/removing-sensitive-data-from-a-repository
- https://www.youtube.com/watch?v=Bo-8EfDpKxA
- https://github.com/newren/git-filter-repo/
- https://m.blog.naver.com/PostView.nhn?blogId=chandong83&logNo=221101838350&proxyReferer=https:%2F%2Fwww.google.com%2F // scoop 설치
- https://marcofranssen.nl/remove-files-from-git-history-using-git-filter-repo/