git과 github을 사용하면서 github 원격 저장소에 잘못 올라간 파일을 삭제하고 싶은 경우가 생긴다. 이러한 경우에 사용되는 git rm과 git rm --cached 명령어에 대해서 알아보고자 한다.
git rm 과 git rm --cached은 모두 파일 혹은 경로를 삭제하는 명령어다. 하지만 큰 차이점이 존재한다.
1) git rm: 로컬과 원격 저장소 모두에서 파일 혹은 경로 삭제
2) git rm --cached: 원격 저장소에서만 파일 혹은 경로 삭제
git rm --cached 명령어를 사용하고 github 원격 저장소를 확인해보면 내가 삭제를 하려고 했던 파일 혹은 경로가 그대로 남아있는 것을 볼 수 있다. 그렇다. git rm --cached 한다고 원격 저장소에서 파일이 삭제되는 것이 아니라 add - commit - push 의 과정을 거쳐야 비로소 삭제가 된다.
아래 예제를 살펴보자.
아래 경로에서 a.py와 b.txt 모두 원격 저장소에 저장되어 있다.
근데 b.txt에 민감한 정보가 들어가 있어 로컬에서는 삭제하지 않지만 원격 저장소에서는 삭제하고자 한다.
# 현재 경로 내 파일(github과 연동되어 있음)
├── a.py
├── b.txt
원격 저장소에서만 삭제하는 방법은 아래와 같다.
1) git rm --cached b.txt
2) git commit -m "텍스트"
3) git push master "branch 이름"
위와 같이 진행했다면 원격 저장소에 b.txt가 삭제되고 a.py만 남아있을 것이다.