달짱달짱

[Git] git 저장소에서 완전히 삭제하기 본문

Git

[Git] git 저장소에서 완전히 삭제하기

달콩쨩 2021. 10. 27. 11:27

일반적으로, git 에서 파일을 delete(rm) 하는 것이 아닌 

이미 git 에 push 되어 remote 에 올라간 파일 자체를 git 저장소에서 아예 삭제 하는 방법

 

1. git bash 열기 

 

2. 해당 branch HEAD 와 연결되어 있지 않는 경우에 HEAD (해당브랜치) 로 옮긴다.

git remote set-head origin [해당 브랜치(예:develop)]

 

3. 파일들을 삭제한다.

git filter-branch --tree-filter 'rm -rf [삭제하고자 하는 경로(예: src/*.cpp)]' HEAD

git filter-branch --prune-empty -f HEAD

 

4. TortoiseGit Sync 메뉴로 --force push 한다.

 

** 기존에 해당 브랜치의 해당 커밋을 pull 받았던 경우, 파일 삭제 후 pull 받게 되면 merge 오류가 발생한다. 이를 해결 하기 위해 아래와 같이 진행이 필요하다. 

    1) master 브랜치로 switching

    2) heads 에서 기존 브랜치를 삭제 (delete branch)

    3) pull 을 받고 정상완료 

    4) remote/develop 브랜치로 switching (heads 에 새롭게 create)

    5) git 저장소에서 사라진 파일 확인 

 

** 이와 같은 경우, 삭제하고자 하는 파일만 저장소에서 삭제 되고, 올려두었던 커밋은 그대로 유지된다. 따라서, 용량이 큰 파일을 실수로 잘못 올렸다던가 하여 git 저장소의 용량을 차지 하게 된 경우 위 방법을 이용하여 삭제 할 수 있다. 

'Git' 카테고리의 다른 글

[Git] 머지 되돌리기  (0) 2023.04.03
[Git] 커밋 메시지 vim 편집기 이용해서 올리기  (0) 2023.03.07
[Git] 자주 쓰는 Git 명령어  (0) 2023.01.25