.gitignore 파일을 나중에 추가를 해주거나 아니면 다른 실수를 하면 .gitignore에 있는 파일이 전부 untracked로 파일로 다 뜰 때가 있다. 무시된 파일을 다시 추적해야 할 수도 있고 추적하고 있는 파일을 다시 무시해야 줘야 할 때도 있다. 그때의 해결법을 상황별로 정리했다.
gitignore 작성 실수로 인해 발생하는 문제의 3가지 패턴과 그 해결법
주로 .gitignore를 뒤늦게 추가해줬거나 잘못된 .gitignore을 올리고 나중에 눈치챈 경우 발생한다.
0. .gitignore
파일을 제대로 작성했는지 확인한다.
일단 현재 상태에서 무시하고자 하는 파일을 제외하고 commit을 해준다. (안 해주면 다 날아가므로 주의하자)
루트 폴더(최상위 폴더)에 간 후 git rm -r --cached .
git rm -r --cached .
git rm의 옵션들
r
: recursive removal - 폴더 안에 다른 파일이 있으면 그 폴더를 지우지 못한다. 그래서 폴더를 지우기 전에 안에 있는 내용을 반복적으로 비워주고 지우겠다는 옵션이다.-cached
: only remove from the index - index에만 지워준다는 말은 Stage Area에서 내려주겠다는 옵션이다. 이 옵션을 사용하면 git에 있는 인덱스 파일만 삭제하고 실제 파일은 삭제되지 않는다.명령어 대상 파일
.
- 현재 디렉터리를 뜻한다. root 디렉토리에서 .
을 사용하면 Working Directory 안의 모든 파일이 작업 대상이 된다.이제부터는 작업 중인 디렉터리의 모든 파일들의 git index가 다 초기화되었으니 모든 파일에 대해 .gitignore가 다시 적용된다. 그러니 이제 평상시대로 git add 해주고 commit 하면서 git status를 쳐보면 추적됐던 파일들이 gitignore에 따라 무시된 것을 확인할 수 있을 것이다.
3. git add -A