guide

.git/info/exclude로 나만의 무시 규칙 쓰기

.gitignore를 수정하지 않고 저장소 하나에만 적용되는 개인 무시 규칙을 .git/info/exclude에 적는 방법, 쓰기 좋은 상황과 우선순위를 설명합니다.

.gitignore는 커밋되어 모든 사람과 공유된다. 그런데 이 저장소에서 나만 무시하고 싶은 파일이 있을 때가 있다. 개인 메모, 실험용 스크립트, 내 에디터 플러그인이 만드는 폴더 같은 것들이다. 이럴 때 쓰는 곳이 .git/info/exclude다.

어디에 있나

git init이나 git clone을 하면 .git/info/exclude 파일이 기본으로 만들어진다. 주석 몇 줄만 들어 있는 빈 파일이다.

cat .git/info/exclude
# git ls-files --others --exclude-from=.git/info/exclude
# Lines that start with '#' are comments.
# ...

.git 디렉터리 안에 있으므로 커밋되지 않고, push해도 다른 사람에게 전달되지 않는다. 문법은 .gitignore와 완전히 같다. 워크트리를 여러 개 쓰는 경우를 포함해 정확한 위치가 궁금하면 git rev-parse --git-path info/exclude로 확인할 수 있다.

언제 쓰나

상황추천 위치
이 저장소에서만 쓰는 개인 파일notes.md, scratch/, todo.txt.git/info/exclude
모든 저장소에 공통인 개인 파일.DS_Store, *.swp전역 gitignore
모든 팀원에게 필요한 규칙node_modules/, dist/, .env.gitignore

특히 남의 저장소에 기여할 때 유용하다. 내 도구 때문에 생기는 파일을 막으려고 프로젝트의 .gitignore를 고치면 리뷰어가 그 변경을 원하지 않을 수 있다. .git/info/exclude에 적으면 커밋 기록을 건드리지 않는다.

echo 'scratch/' >> .git/info/exclude
echo '.my-plugin-cache/' >> .git/info/exclude
git status   # 더 이상 보이지 않는다

우선순위

규칙 출처 가운데 .git/info/exclude.gitignore보다 낮고, 전역 파일보다 높다.

  1. 명령줄 패턴
  2. .gitignore (하위 디렉터리 파일이 상위를 덮어씀)
  3. .git/info/exclude
  4. core.excludesFile

그래서 .gitignore가 무시하는 파일을 .git/info/exclude! 규칙으로 되살릴 수는 없다. 직접 확인해 보면 다음과 같다.

# .gitignore        : x
# .git/info/exclude : !x
$ git check-ignore -v x
.gitignore:1:x	x

주의할 점

참고

← 이전전역 gitignore 설정하기 (core.excludesFile)