본문 바로가기

Git

이미 깃헙 repo에 올라간 파일에 .gitignore 적용이 안되는 경우

이미 깃헙 repo에 commit후 push해버린 파일들을 추후에 .gitignore에 추가할 때가 있다.

예를 들면 node_modules 폴더를 초기에 .gitignore에 설정해놓지 않고 그냥 repo에 올려버렸는데, 나중에 .gitignore에 node_modules/ 를 추가하더라도 이미 git은 node_modules안의 파일들을 tracking 하고있기 때문에 이미 트랙킹 중인 파일들을 무시되지 않는다.

 

먼저 아래 명령어들에 대해 살펴보자.

 

rm <fileName>

git을 사용하지 않는 rm은 작업 디렉토리에서 파일을 삭제하는 명령어이다.

 

git rm <fileName>git을 사용한 rm은 작업 디렉토리와 스테이징 영역에서 파일을 삭제 시킨다.

 

git rm --cached <fileName>
--cached를 뒤에 붙이면, 스테이징 영역에서만 파일이 삭제된다. 하지만 작업 디렉토리나 저장소에서는 삭제되지 않는다.

 

git add <fileName>
해당 파일에 대해 스테이징한다.

 

git add .
현재 디렉토리에서 수정/생상/삭제된 파일에 대해 스테이징한다.

 

git commit -m "<message>"

커밋 메세지와 함께 커밋한다.

 

위의 명령어들을 터미널에서 아래와 같이 사용한다.

$ git rm --cached .
//현재 디렉토리 기준 스테이징 된 파일을 모두 비움

$ git add .
//현재 디렉토리 기준 .gitignore가 적용된 작업트리를 다시 스테이징 시킴

$ git commit -m ".gitignore 파일 트랙킹하지 않도록 수정"
//커밋 메세지와 함께 새롭게 커밋 함

$ git push
//위의 커밋을 원격 저장소로 push함

 

.gitignore에 들어간 파일들은 삭제되고 나머지 원하는 파일들만 원격저장소에 올라가있는 것을 볼 수 있다.

 

참고자료

https://stackoverrun.com/ko/q/10277008