혼자 프로젝트를 진행하면 어떤 파일을 push해도 상관없지만 팀원들과 일을할때는 올리지 말아야하는 파일들이 존재한다.
IDE관련 설정파일이던가 build와 관련된 파일들 같이 개인과 관련된 파일들인데 일을 하다보면 종종 파일이 공유되는 문제가 발생한다.
분명 ignore에 정의 되어 있는데 이런 문제가 발생하는 이유는 무엇일까?
프로젝트를 생성하고 git branch에 처음 push 하기 전에 gitignore를 잘 정의했다면 해당 문제는 발생하지 않는다. (100%는 아님)
gitignore를 다 정의하지 않고 내 로컬에서 생성된 모든 파일을 branch에 올리게 되면 대상 파일들은 모두 git이 트래킹하기 시작한다.
그래서 그 뒤에 gitignore를 정의하면 해당 내용이 제대로 반영되지 않는 문제가 발생한다.
본인이 신중해서 git에 push 하기전에 올릴 파일들을 선별하고 대상 파일만 add, commit, push를 한다면 gitignore가 적용되든 안되든 상관없겠지만 일반적으로는 add . 으로 모든 파일을 staged 에 올려서 commit, push 하는경우가 더 많다.
그럼 이미 트래킹 되고 있는 상태에서 gitignore를 반영할 수 있게 해보자.
먼저 트래킹에서 제거하고자 하는 대상을 .gitignore 에 정의한다.
git rm -r --cached .
git add .
git commit -m "Fix untracked files"
git rm -r --cached . 명령어로 캐시된 내용을 삭제 하고 git status 명령어를 실행하면 .gitignore에 추가한 항목들에 deleted 라고 상태가 정의된 것을 볼 수 있다.
git add -> commit -> push 하면 원격지에 트래킹 제거 대상들이 정리가 되고 추후 트래킹이 되지 않는걸 확인 할 수 있다.