오늘은 .env 파일을 잘못 푸시했을 때에 대하여 이야기해보겠습니다!
.env에는 유출되면 안되는 정보들이 많이 저장되기 때문에 깃허브에 올리면 절대 안되는데욥...
제가 잘못 올려버려서 하하..😅
해결해봅시다!
아래 명령어를 실행해줍니다!
git rm --cached .env
위 명령어는 로컬 저장소의 .env는 그대로 두고 원격저장소의 .env만을 삭제하는 명령어 입니다.
그럼 VScode 왼쪽 사이드바에 소스제어 칸을 보면 .env가 삭제되어있는 것을 볼 수 있습니다!
.gitignore 파일을 프로젝트 안에 생성해줄겁니다!
먼저 vscode에서 새 파일의 이름을 .gitignore로 생성해주세요.
그리고 옆 사이트에 가서 파일에 들어갈 내용을 생성해줍니다. 👉🏻 .gitignore-io
위 사진 처럼 운영체제 / 툴 / 언어를 작성해주시고 생성 눌러주시면
이상한 글들이 나옵니다
전부 복사해서 아까 생성해준 .gitignore 파일에 내용을 붙여넣기 해줍니다!
이 gitignore을 생성하면 자동으로 .env파일에 관한 내용이 작성되기 때문에 따로 .env를 입력하지 않아도 됩니다!
여기까지 따라 오셨다면 다시 최종으로 푸시해주세요!
git push origin "브랜치"
그럼 이렇게 reporsitory에는 없지만 로컬에는 .env파일이 존재합니다!
완벽하게 한 것 같지만 커밋 히스토리에는 .env 파일이 남아있기 때문에 커밋 히스토리도 지워줍니다!
git filter-branch --force --index-filter "git rm --cached --ignore-unmatch '해당 프로젝트에서의 .env 파일의 경로'" --prune-empty --tag-name-filter cat -- --all
위 명령어를 입력하면
WARNING: git-filter-branch has a glut of gotchas generating mangled history
rewrites. Hit Ctrl-C before proceeding to abort, then use an
alternative filtering tool such as 'git filter-repo'
(https://github.com/newren/git-filter-repo/) instead. See the
filter-branch manual page for more details; to squelch this warning,
set FILTER_BRANCH_SQUELCH_WARNING=1.
Proceeding with filter-branch...
Rewrite 6d4da0783ff8ec7399ff3a6f5060ecba53f83e51 (0 seconds passed, remaining 0 predicted) rm '.env'
Ref 'refs/heads/master' was rewritten
Ref 'refs/remotes/origin/master' was rewritten
이렇게 뜰텐데 warning 가볍게 무시해줍니다!
이후 강제로 푸시해주면 끝입니다!
git push origin 브랜치명 --force
이전 커밋에서 .env파일만 쏙 빠져서 사라질겁니다!
🙇 오늘도 읽어주셔서 감사합니다!
좋은 글 감사합니다!! 😍
덕분에 참고가 되었습니다 :)