Git 파일 무시, .gitignore 외 3가지 방법 공개!

by DD
3시간 전
조회수 2

Git에서 파일을 무시하는 세 가지 주요 방법(.gitignore, .git/info/exclude, 전역 설정)을 소개함.

각 방법의 적용 범위와 사용 사례를 명확히 구분하여 설명함.

커뮤니티에서는 `.gitattributes`의 diff 무시 기능 등 추가적인 고급 기법이 논의됨.

전역 설정의 '머신 레벨' vs '사용자 레벨' 범위에 대한 명확화가 필요하다는 의견이 있음.

전역 무시 설정의 범위와 오해

댓글에서는 `~/.config/git/ignore`가 '머신 레벨'이 아닌 '사용자 레벨'에서 작동한다는 점을 지적함. 즉, 동일 머신 내 다른 사용자에게는 적용되지 않음. Git의 `--global` 옵션은 '사용자별' 설정을 의미하며, 진정한 '머신 레벨' 설정은 `/etc/gitignore`와 같은 시스템 설정을 통해 가능하나 사용자 설정이 이를 덮어쓸 수 있다는 점이 강조됨. 팀 협업 시에는 프로젝트 루트의 `.gitignore`가 더 일관된 관리 방안으로 선호될 수 있음.

`.gitattributes`를 통한 diff 무시 기능

커뮤니티에서는 `.gitignore` 외에 `.gitattributes` 파일을 활용한 '차이점 무시(ignore diff)' 기능이 주목받음. 특히 `package-lock.json`과 같이 버전 관리에서 노이즈가 되는 파일에 대해 `-diff` 속성을 적용하면, 파일 자체는 커밋되지만 `git diff` 시 변경 사항이 표시되지 않아 가독성을 높일 수 있다는 설명임. 이는 파일의 스테이징 및 커밋은 유지하면서 불필요한 변경 내역 확인을 방지하는 유용한 기법임.

개인별/프로젝트별 파일 무시 전략

`.git/info/exclude`는 각 리포지토리별로 개인적인 파일(예: 로컬 노트, IDE 설정)을 무시하는 데 유용함. 반면, `~/.config/git/ignore`는 모든 Git 리포지토리에 걸쳐 일관되게 무시할 파일(예: `.DS_Store`, 빌드 아티팩트)을 지정하는 데 사용됨. 개발자들은 이러한 설정을 통해 `.gitignore` 파일의 복잡성을 줄이고, 개인 워크플로우에 맞는 환경을 구축할 수 있다고 언급함.

추적 중인 파일의 변경 무시: `skip-worktree`

이미 추적 중인 파일의 변경 사항을 Git이 무시하도록 하는 `git update-index --[no]-skip-worktree` 옵션도 언급됨. 이는 로컬 실험이나 설정 파일 수정을 위해 유용하지만, Git이 이를 명시적으로 표시하지 않아 사용자가 직접 기억하고 관리해야 하는 번거로움이 있다는 지적이 있음. 체크아웃 시 충돌을 방지하기 위해 사용 후에는 반드시 `--no-skip-worktree`로 되돌려야 함.

.gitignore Isn't the only way to ignore files in Git