-
Git에 잘못된 파일, 폴더를 올렸을 때GIT 2021. 11. 5. 22:31
git에 올라가면 안되는 파일 (.env, application.properties, secret key...)을 올렸을 때 이를 해결하는 방법을 알아보자.
올라가 있는 파일 삭제
먼저 git에 push된 파일을 먼저 삭제해보자.
//원격 저장소와 로컬 저장소에 있는 파일 모두 삭제 $ git rm 삭제할 파일 이름 $ git rm -r 삭제할 파일 디렉토리 //원격저장소의 파일만 삭제 $ git rm --cached 삭제할 파일 이름 $ git rm --cached -r 삭제할 파일 디렉토리
.gitignore에 해당 파일 추가
올려진 파일을 삭제했다면 .gitignore에 올리면 안되는 파일, 디렉토리를 설정해준다.
이미 commit으로 올라가 있는 파일, 디렉토리의 히스토리 삭제
원격저장소의 파일을 삭제한다고 해서 이미 commit 내역으로 히스토리로 해당 정보가 올라간 것까지 삭제할 수는 없다.
이럴때 commit 내역에서 삭제하고자 하는 파일, 폴더 내역을 지워줄 수 있다.
// // 파일 삭제 $git filter-branch --index-filter 'git rm --cached --ignore-unmatch 파일이름' --prune-empty --force -- --all // // 디렉토리 삭제 //커밋내역 삭제 $ git filter-branch --tree-filter 'rm -rf 해당폴더위치와이름(ex)frontend/src)` HEAD //존재하는 빈 commit 삭제 $git filter-branch --prune-empty -f HEAD
파일, 디렉토리가 잘 삭제되었다면 해당내역을 강제로 push 해준다.
$ git push origin +master
filter-branch 사용시 백업내용 존재 에러 발생시
삭제하려고 할때 cannot create a new backup 의 오류가 발생한다면 update-ref로 이미 존재하는 백업을 삭제하고 진행해준다.
$ git update-ref -d ref(ex)refs/original/refs/heads/master)
(참고한 사이트)
https://www.dsaint31.me/etc/etc-git-filter-branch/
'GIT' 카테고리의 다른 글
Github Actions (0) 2022.11.03 git 기능 구현을 다른 브랜치에서 작성했을 때 (0) 2022.01.25 Git Commit Convention (0) 2021.12.14 Git Branch Strategy (0) 2021.12.13 VSCODE source control에 설정하지 않은 repository가 올라온다면 (0) 2021.05.20