Git 파일 무시하기: .gitignore, .git/info/exclude, 및 Global Ignores 사용하기
Git은 사용자가 세 가지 다른 수준에서 파일을 무시할 수 있도록 허용합니다: 프로젝트 수준, 저장소 로컬 수준, 그리고 사용자 전역 수준입니다. 이러한 계층적 접근 방식은 개발자가 공유 프로젝트 요구 사항을 개인적인 워크플로우 선호도 및 머신 특정 OS 노이즈와 분리할 수 있게 해줍니다.
.gitignore를 사용한 프로젝트 수준 무시
.gitignore는 모든 기여자가 저장소에서 제외해야 할 파일을 무시하는 표준 방법입니다. 이 파일은 버전 관리 시스템에 체크인되므로, 여기에 추가된 모든 패턴은 저장소를 클론하는 모든 사람에게 적용됩니다.
이 파일은 다음 용도에 가장 적합합니다:
- 빌드 출력물 (예:
/dist,/bin) - 의존성 폴더 (예:
node_modules/) - 프로젝트 특정 임시 파일
.git/info/exclude를 사용한 저장소 로컬 수준 무시
특정 저장소에서 무시해야 하지만 다른 협업자와 공유해서는 안 되는 파일의 경우, Git은 .git/info/exclude 파일을 제공합니다. 이 파일은 .git 디렉토리 내에 위치하며 버전 관리 시스템에 의해 추적되지 않습니다.
이는 단일 프로젝트 내에서 특정 개발자의 워크플로우에 고유한 개인적인 메모, 로컬 전용 스크립트 또는 사용자 정의 Makefiles를 위한 이상적인 위치입니다. 한 기여자는 다음과 같이 언급했습니다:
I use the ever living hell out of .git/info/exclude. Works great for scripts/Makefiles I only want locally and collaborators wouldn’t care about or be able to use.
~/.config/git/ignore를 사용한 사용자 전역 수준 무시
머신 상의 모든 Git 저장소에서 파일을 무시하려면 개발자는 전역 무시 파일을 사용할 수 있습니다. 기본적으로 이 파일은 ~/.config/git/ignore에 위치합니다.
전역 무시는 macOS의 .DS_Store와 같이 모든 프로젝트에 나타나는 OS 특정 파일이나 IDE 설정에 가장 효과적입니다. 전역 무시를 사용하면 이러한 파일들이 프로젝트 수준의 .gitignore 파일을 어지럽히는 것을 방지할 수 있습니다.
전역 무시 경로 사용자 정의
기본 위치 외에 선호하는 위치를 원하는 경우, 다음 명령어를 사용하여 전역 무시 파일을 사용자 정의할 수 있습니다:
git config --global core.excludesFile ~/.gitignore_global
기본 설정으로 되돌리려면 다음을 실행하십시오:
git config --global --unset core.excludesFile
Git 용어에서 --global은 전체 시스템이 아니라 현재 사용자의 구성을 의미한다는 점에 유의하십시오. 시스템 전체 구성은 일반적으로 /etc에 위치합니다.
git check-ignore를 사용하여 무시된 파일 디버깅하기
여러 무시 파일이 활성화되어 있을 때, 어떤 파일이 특정 파일을 제외하는 데 책임을 지고 있는지 판단하기 어려울 수 있습니다. git check-ignore -v 명령어는 무시를 유발하는 정확한 파일과 줄 번호를 식별합니다.
예시 출력:
- 프로젝트 수준:
.gitignore:1:.DS_Store .DS_Store - 로컬 수준:
.git/info/exclude:7:.DS_Store .DS_Store - 전역 수준:
/Users/nelson/.config/git/ignore:2:.DS_Store .DS_Store
파일이 무시되지 않고 있다면, 명령어는 아무런 출력도 생성하지 않습니다.
고급 대안 및 보충
표준 무시 외에도, Git은 파일 노이즈 및 구성을 관리하기 위한 다른 도구들을 제공합니다:
.gitattributes를 사용한 Diff 억제
.gitignore가 파일을 추적하지 않도록 방지하는 반면, .gitattributes는 추적된 파일의 diff를 무시하도록 사용하는 데 사용될 수 있습니다. 예를 들어, .gitattributes 파일에 package-lock.json -diff를 추가하면 해당 파일을 커commit할 수 있지만 git diff 작업 중에 발생하는 거대하고 종종 노이즈가 많은 diff를 숨길 수 있습니다.
원격 저장소 특정 구성
Git은 구성 파일에서 조건부 포함을 지원하여, 원격 URL 또는 저장소의 디렉토리 위치에에 따라 다른 설정을 적용할 수 있습니다. 이는 업무용 및 개인용 프로젝트를 위한 서로 다른 이메일 주소나 구성을 관리하는 데 유용합니다.
바이너리 파일을 위한 Pre-commit Hooks
바이너리 파일이나 특정 크기를 초과하는 파일을 차단하기 위해, 일부 개발자는 무시 파일에만 의존하기보다 전역 hooks 디렉토리(git config --global core.hooksPath ~/.config/git/hooks)를 사용하여 pre-commit 체크를 구현하는 것을 권권장합니다.