가끔 프로젝트 초기 세팅때 정신을 놓고 있다가 .gitignore
설정을 까먹고 .env
를 푸시해버리는 경우가 있다.
그냥 커밋이더라도 놀랄텐데… 푸시?
ㅎㄷㄷ…
24시간 github를 돌아다니는 어떤 해커가 곧바로 내 소중한 환경 변수들을 탈취해갈까 손발이 덜덜 떨린다…
이럴 경우에는 아래와 같이 진행하면 된다.
먼저 git log
를 통해 내가 커밋 목록을 확인한다. 그러면 아래와 같은 커밋 목록이 뜬다.
이중 문제가 되는 커밋이 무엇인지 확인한다. 노란 글씨로된 commit
옆 해시값이 중요하다. 이것이 바로 commit id다!
우리는 이제 git reset
을 통해 해당 커밋이 되기 전 상황으로 돌아가야 한다.
만약 해당 커밋 이후의 모든 내용을 지우고 싶다면 (현재 로컬 에디터의 코드 변경사항이 지워져도 상관 없다면) --hard
옵션을,
커밋 이력만 지우고 싶다면(현재 로컬에 있는 코드 변경사항이 지워지지 않길 바란다면) --soft
옵션을 준다.
git reset --soft "문제 commit id"
이런식으로 하면 해당 커밋이 삭제 된다.
이후 .gitignore
에 .env
파일을 올려놓았는데도 .env
가 회색으로 보이지 않는 경우가 있다.
이때는
git rm .env --cached
을 통해 캐시를 삭제해준다.
이후 git add .
를 다시 해주고 git status
를 통해 .env
파일이 없는지 다시 확인해보자.
이번에는 .env
파일이 잘 빠져있는지 확인한 후, 새로운 commit을 한다.
git commit -m "remove .env file from git"
이후 다시 push를 해주자. (-force 옵션을 안주면 무조건 에러가 난다…)
git push -f