본문 바로가기
협업툴/Git

[Git] 실수로 올린 env 삭제하기 (commit history까지 완전 삭제)

by 발담그는블로그 2022. 7. 28.

git에 env 파일을 실수로 올려버렸다. 

최근 사용한 프로그램은 돈이 나가는 프로그램이라 env 파일을 빨리 삭제해야했다.

그래서 검색해보니 명령어는 다음과 같았다.

git rm .env --cached
git add .
git commit -m "remove .env file from git"
git push

 

이렇게 해서 env 삭제는 되었지만... commit한 history에 내 env 파일이 남아있었다. 엉엉

 

파일만 삭제하려고 보니, delete 버튼이 비활성화가 되어 있어서 삭제하지 못해서 인터넷에 다시 검색해보았다. 

찾아보니 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

 

 

결과를 확인해보니 잘 삭제가 된 것 같다.

 

출처

- .gitignore에 .env 파일 올려도 git에 올라갈 때

- Git Histor에서 특정 파일 삭제하기