API KEY (.env) 숨기기 (이미 올렸을 경우 history 지우기)
이미 env 파일을 깃허브에 올렸다면 gitignore 파일에 .env 적용을 하지 않은 상태일 것이다.
root에 있는 .gitignore 에 .env를 추가해준다.
이미 API KEY를 commit 하여 저장소에 올린 경우
1. env 파일 삭제
$ git rm .env --cached
$ git add .
$ git commit -m 'remove .env file from git'
$ git push
github 저장소에 있는 env 파일을 삭제해 준다.
그러나 이렇게만 하면 이전에 남아있던 기록은 지워지지 않는다 그렇기에 history까지 지워줘야 한다.
2. git history 특정 파일 삭제 명령어
$ git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch PATH-TO-YOUR-FILE-WITH-SENSITIVE-DATA' --prune-empty --tag-name-filter cat -- --all
PATH-TO-YOUR-FILE-WITH-SENSITIVE-DATA
구간에 삭제할 파일이나 폴더를 작성한다.
- 파일의 경우 ./파일명.js 등으로 작성 (env의 경우엔 .env)
- 폴더의 경우 -r option을 추가로 작성
그 후 git에 push 해주면 관련된 commit이 사라진다.
- 저장소를 혼자 작업 중인 경우
$ git push origin --force --all
주의!
해당 명령어는 원격 저장소의 내용이 로컬 저장소의 내용과 일치하도록 원격 저장소의 변경사항들을
강제로 덮어쓰게 된다.
아래와 같은 경우에만 force push를 수행하도록 한다.
- 덮어쓰기 (overwrite) 하려는 변경사항을 현재 사용자 외에 다른 사람들이 pull 하지 않은 경우
- force push를 수행한 이후, 모든 사용자들로 하여금 새로운 사본을 clone 하도록 하고 그들의 변경 사항을 새로운 사본 기반으로 재 적용하도록 한다.
- 저장소를 타인과 공유 작업 중인 경우
로컬 저장소와 비교했을 때, 원격 저장소에 새로운 커밋이 추가되어 있는 경우 덮어쓰기 작업을 취소시키는
$ git push origin --force-with-lease
옵션을 사용하는 게 더 안전하다.
자세한 설명 아래 주소 클릭
https://blog.developer.atlassian.com/force-with-lease/
-force considered harmful; understanding git's -force-with-lease - Atlassian Developer Blog
Reading Time: 5 minutes Git’s push --force is destructive because it unconditionally overwrites the remote repository with whatever you have locally, possibly overwriting any changes that…
blog.developer.atlassian.com