.gitignore가 동작 안할 때 상황별로 해결하기
.gitignore 파일을 나중에 추가를 해주거나 아니면 다른 실수를 하면 .gitignore에 있는 파일이 전부 untracked로 파일로 다 뜰 때가 있다. 무시된 파일을 다시 추적해야 할 수도 있고 추적하고 있는 파일을 다시 무시해야 줘야 할 때도 있다. 그때의 해결법을 상황별로 정리했다.
gitignore 작성 실수로 인해 발생하는 문제의 3가지 패턴과 그 해결법
- 상황 1. 이미 모든 파일을 git이 추적중인 경우
- 상황 2. 이미 추적 중인 파일 몇 개만 무시하고 싶은 경우
- 상황 3. 반대로 .gitignore에 있었던 파일을 다시 추적하고 싶을 경우
상황 1. 이미 모든 파일을 git이 추적 중인 경우
주로 .gitignore를 뒤늦게 추가해줬거나 잘못된 .gitignore을 올리고 나중에 눈치챈 경우 발생한다.
이미 모든 파일을 올려서 git이 추적중인데 .gitignore파일을 적용하고 싶을 때 이 방법을 쓰면 된다.
해결법
0. .gitignore
파일을 제대로 작성했는지 확인한다.
1. 일단 현재 상태에서 무시하고자 하는 파일을 제외하고 commit을 해준다. (안 해주면 다 날아가므로 주의하자)
2. 루트 폴더(최상위 폴더)에 간 후 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
4. git commit -m "gitignore 다시 적용"
상황 2. 이미 추적 중인 파일 몇 개만 무시하고 싶은 경우
주로 원래 .gitignore를 사용하던 중 .gitignore에 무시할 파일을 더 추가했을 경우 발생한다.
.gitignore에 명시된 파일들 중 일부만 무시가 안 될 때 이 방법을 쓰면 된다. 위의 방법이랑 거의 똑같다.
해결법
0. .gitignore
파일을 제대로 작성했는지 확인한다.
1. 일단 현재 상태에서 무시하고자 하는 파일을 제외하고 commit을 해준다. (안 해주면 다 날아가므로 주의하자)
2. 루트 폴더(최상위 폴더)에 간 후 git rm -r --cached 파일명1 파일명2 ...
git rm -r --cached 파일명1 파일명2 ...
git 옵션들은 위랑 똑같고 rm대상 파일을 하나씩 지정해주면 된다.
명령어 대상 파일
- 파일명1 파일명2 ... - 대상 파일을 지정한다.
Ex) 내가 A.txt 파일이랑 B.txt 파일을 무시해주고 싶은 경우
.gitignore에 그 파일들을 무시하라고 추가했는지 확인한 후.
git rm -r --cached A.txt B.txt
이제부터는 선택한 파일의 git index가 다 초기화되었으니 .gitignore가 다시 적용되게 된다. 그러니 이제 평상시대로 git add 해주고 commit 하면서 git status를 쳐보면 추적됐던 파일들이 gitignore에 따라 무시된 것을 확인할 수 있을 것이다.
3. git add -A
4. git commit -m "gitignore 다시 적용"
상황 3. 반대로 .gitignore에 있었던 파일을 다시 추적하고 싶을 경우
주로 .gitignore에 의해서 무시된 파일을 강제로 git으로 관리(add, commit)하게 하고 싶을 경우이다.
무시돼서 Stage Area에도 못 올리고 Working Directory에는 있지만 git이 무시하는 파일을 다시 git으로 관리하고 싶을 때 이 방법을 쓰면 된다.
해결법
이 경우 해결법은 간단하다. git add를 force옵션을 써서 사용하면 된다.
명령어 TIP
- untrack 파일을 보려면
git ls-files --others
- ignore된 파일을 보고 싶으면
git ls-files --others -i --exclude-standard
1. git -f 다시추적하고싶은파일명
git add -f 파일명
git add의 옵션
-f 또는 --force
: allow adding otherwise ignored file - gitignore에 의해서 무시된 파일을 강제로 Stage 해주는 옵션이다.
이 force 옵션을 써서 git add를 하면 무시된 파일도 강제로 Stage Area로 이동시켜준다.
2. git commit -m "무시했던 파일 다시 추적하게 함"
끝
출처
- Git Reference Book: https://git-scm.com/docs/git-rm
- Icons made by smalllikeart from www.flaticon.com
댓글
이 글 공유하기
다른 글
-
Git의 파일 상태 구분법
Git의 파일 상태 구분법
2020.04.09 -
Git Internals 정리 :: Git은 어떻게 동작할까?
Git Internals 정리 :: Git은 어떻게 동작할까?
2020.03.16 -
GitHub README.md 이미지가 갱신/업데이트 안 되는 경우 해결법
GitHub README.md 이미지가 갱신/업데이트 안 되는 경우 해결법
2020.02.20 -
Git/GitHub Commit 수정하기 :: Author / Contributor 수정하기
Git/GitHub Commit 수정하기 :: Author / Contributor 수정하기
2019.10.14