설명
- gitignore에 등록된 상태로 한 번이라도 커밋이 이루어진 파일은 git이 더이상 추적하지 않는다.
- 혹은 신규 파일을 gitignore에 등록하면 git은 처음부터 그 파일을 추적하지 않도록 하여 무시한다.
- 이 상태로 대상 파일을 추가/변경/제거하려면 강제 명령어를 사용해야 한다.
<aside>
Case 1: gitignore에 작성된 신규 파일(무시됨)
원하는 동작
- gitignore에서는 유지함
- 커밋하여 이후 git 추적 상태를 유지
방법
git add -f {경로}
</aside>
<aside>
Case 2: 한 번 이상 커밋이 발생하여 gitignore로 무시 불가능한 파일
원하는 동작
- gitignore를 통해서 무시
- 원격 리포지토리에서 해당 파일을 제거
- 이후 gitignore를 통해 무시하는 상태 유지
방법
- 스테이징 영역에서 강제로 제거하는 명령어 사용 후 커밋
git rm --cached {파일경로}
git rm --cached {디렉토리경로}/**
</aside>
<aside>
Case 3: 신규 파일을 최초 커밋 후 무시
원하는 동작
- gitignore를 통해서 무시
- 강제로 최초 커밋
- 이후 최초 커밋 상태를 유지하며 무시
방법
- 커밋 이후 update-index 명령어를 통해 변경사항 무시
- 단점: 다른 사용자(로컬 리포지토리)들에게는 적용되지 않음. 즉, 이미 커밋된 파일이므로 변경사항 발생하면 추적됨
# 무시 설정
git update-index --skip-worktree {파일경로}
# 무시 해제
git update-index --no-skip-worktree {파일경로}
# 무시 상태 확인(H: 추적됨, S: 무시됨)
git ls-files -v [경로]
git ls-files -v | findstr "^S"
git ls-files -v $(git rev-parse --show-toplevel) | findstr "^S"
</aside>