Github에 .env파일을 push했을 때

김현지·2024년 2월 26일
1
post-thumbnail
post-custom-banner

오늘은 .env 파일을 잘못 푸시했을 때에 대하여 이야기해보겠습니다!

.env에는 유출되면 안되는 정보들이 많이 저장되기 때문에 깃허브에 올리면 절대 안되는데욥...

제가 잘못 올려버려서 하하..😅

해결해봅시다!


🪜 대략적인 단계

  1. 원격저장소의 .env를 제거
  2. .gitignore 파일 추가
  3. 최종 push
  4. commit history 삭제

1. 원격저장소의 .env 파일 제거

아래 명령어를 실행해줍니다!

git rm --cached .env

위 명령어는 로컬 저장소의 .env는 그대로 두고 원격저장소의 .env만을 삭제하는 명령어 입니다.

그럼 VScode 왼쪽 사이드바에 소스제어 칸을 보면 .env가 삭제되어있는 것을 볼 수 있습니다!


2. .gitignore 파일 추가하기

.gitignore 파일을 프로젝트 안에 생성해줄겁니다!

먼저 vscode에서 새 파일의 이름을 .gitignore로 생성해주세요.

그리고 옆 사이트에 가서 파일에 들어갈 내용을 생성해줍니다. 👉🏻 .gitignore-io

위 사진 처럼 운영체제 / 툴 / 언어를 작성해주시고 생성 눌러주시면

이상한 글들이 나옵니다
전부 복사해서 아까 생성해준 .gitignore 파일에 내용을 붙여넣기 해줍니다!

이 gitignore을 생성하면 자동으로 .env파일에 관한 내용이 작성되기 때문에 따로 .env를 입력하지 않아도 됩니다!


3. 최종 push

여기까지 따라 오셨다면 다시 최종으로 푸시해주세요!

git push origin "브랜치"

그럼 이렇게 reporsitory에는 없지만 로컬에는 .env파일이 존재합니다!


4. 커밋 히스토리 삭제

완벽하게 한 것 같지만 커밋 히스토리에는 .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파일만 쏙 빠져서 사라질겁니다!


🙇 오늘도 읽어주셔서 감사합니다!

profile
모두가 따라할 수 있는 쉬운 글을 작성하자!
post-custom-banner

2개의 댓글

comment-user-thumbnail
2024년 2월 27일

좋은 글 감사합니다!! 😍
덕분에 참고가 되었습니다 :)

1개의 답글