모든 로그에서 특정 파일 삭제하는 방법
in Git
모든 로그에서 특정 파일 삭제하는 명령어 소개
특정 커밋에서 불필요한 파일(.env
등)이 올라간 적이 있어서, 이를 찾아보다가 알게된 방법 입니다. 🤔
GIT 모든 로그에서 특정 파일 삭제하는 방법
git filter-branch --tree-filter 'rm -rf .env' HEAD
❗️ 어떤 문제가 발생할지 모르니… 무조건 백업 먼저 해두기!!
만약에 폴더에 있다면 폴더 경로까지 다 작성해주면 됩니다.
(ex: model/auth.js)
git filter-branch --tree-filter 'rm -rf model/auth.js' HEAD
그리고 커밋할 내역에 남아있다면 오류가 발생하니 미리 Commit or Stash 처리 해둬야 합니다.
🤔 혹시나 폴더에 공백이 있다면? (ex: /folder 1/test.sh
)
이 경우에는 특수문자인 \
를 사용하면 됩니다. ❗️
git filter-branch --tree-filter 'rm -rf folder\ 1/test.sh' HEAD
🚨 혹시나 아래와 같은 오류가 발생하며 안된다면?
cannot create a new backup.
a previous backup already exists in refs/original/ force overwriting the backup with -f ...
위와 같은 경우에는 강제로 덮어 쓸수 있도록! -f
명령어를 추가해주시면 해결됩니다.
git filter-branch -f --tree-filter 'rm -rf .env' HEAD