도구스개발

.gitignore 패턴 판정기

.gitignore 규칙과 경로를 넣으면 그 파일이 무시되는지, 어느 줄이 마지막으로 이겼는지 알려줍니다. 부모 디렉터리가 제외돼 되살릴 수 없는 경우도 짚어 줍니다.

주석(#)과 빈 줄은 그대로 두어도 됩니다.

저장소 최상위에서 본 상대경로로 넣으세요.

판정

무시됩니다

12번째 줄 "docs/*.draft.md" 이 마지막으로 걸렸습니다

규칙별로 걸렸는지

규칙성격걸림
2/build경로 전체
3node_modules/디렉터리만 · 이름만
4*.log이름만
5!important.log되살리기 · 이름만
8.cache/디렉터리만 · 이름만
9**/tmp/디렉터리만 · 경로 전체
12docs/*.draft.md경로 전체걸림 (이김)

위에서 아래로 훑어 마지막으로 걸린 줄이 결정합니다. 되살리기(!)를 앞에 두면 뒤의 제외 규칙에 다시 걸려 소용이 없습니다.

슬래시가 어디 있느냐로 뜻이 갈립니다.
패턴 안에 슬래시가 없으면(*.log) 어느 깊이에서든 이름만 맞으면 걸립니다. 앞이나 가운데에 슬래시가 있으면(/build, doc/frotz) .gitignore가 놓인 곳을 기준으로 경로 전체를 맞춥니다. 끝에만 슬래시가 붙으면(build/) 디렉터리만 걸리되 깊이는 상관없습니다.
*는 슬래시를 넘지 못하고 **는 넘습니다.
a/*.txta/b.txt를 잡지만 a/x/b.txt는 못 잡습니다. a/**/b.txt는 둘 다 잡고 a/b.txt처럼 사이가 비어 있어도 잡습니다. ?는 슬래시가 아닌 한 글자, [0-9]는 문자 범위입니다.
이 판정기는 .gitignore 하나만 봅니다. 실제 Git은 상위 디렉터리들의 .gitignore, .git/info/exclude, core.excludesFile까지 함께 보고, 무엇보다 이미 추적 중인 파일은 무시 규칙과 상관없이 계속 추적합니다. 실수로 커밋한 파일을 무시 목록에 넣어도 사라지지 않는 이유이며, 그때는 git rm --cached로 먼저 빼야 합니다.

사용 방법

  1. 1.gitignore 내용을 그대로 붙여 넣습니다. 주석과 빈 줄은 두어도 됩니다.
  2. 2판정할 경로를 저장소 최상위 기준 상대경로로 넣습니다.
  3. 3파일인지 디렉터리인지 고릅니다. 끝에 슬래시가 붙은 규칙은 디렉터리만 걸립니다.
  4. 4규칙별 표에서 어느 줄이 걸렸고 어느 줄이 이겼는지 확인합니다.

자주 묻는 질문

이미 추적 중인 파일이기 때문일 가능성이 큽니다. Git은 한 번 추적을 시작한 파일은 무시 규칙과 상관없이 계속 추적합니다. git rm --cached로 색인에서 먼저 빼야 합니다. 그 밖에 규칙 순서가 잘못됐거나, 부모 디렉터리가 제외돼 되살리기가 먹지 않는 경우도 있습니다.

부모 디렉터리가 이미 제외됐기 때문입니다. Git은 제외된 디렉터리 안을 아예 들여다보지 않으므로 그 안의 파일을 되살릴 수 없습니다. build/를 제외하고 !build/keep.txt를 써도 소용없습니다. build/**로 안쪽만 제외하고 !build/로 디렉터리를 살린 다음 파일을 되살려야 합니다.

중요합니다. 위에서 아래로 훑어 마지막으로 걸린 줄이 결정합니다. !important.log를 *.log 앞에 두면 뒤의 *.log에 다시 걸려 소용이 없습니다. 되살리기는 항상 제외 규칙보다 뒤에 두세요.

패턴 안에 슬래시가 없으면 어느 깊이에서든 이름만 맞으면 걸립니다(*.log). 앞이나 가운데에 있으면 .gitignore가 놓인 곳 기준으로 경로 전체를 맞춥니다(/build, doc/frotz). 끝에만 붙으면 디렉터리만 걸리되 깊이는 상관없습니다(build/).

*는 슬래시를 넘지 못하고 **는 넘습니다. a/*.txt는 a/b.txt를 잡지만 a/x/b.txt는 못 잡습니다. a/**/b.txt는 둘 다 잡고, 사이가 비어 있는 a/b.txt도 잡습니다. **/tmp/는 어느 깊이의 tmp 디렉터리든 잡습니다.

이 판정기의 계산 로직은 실제 git check-ignore 결과와 61가지 사례에서 모두 일치하는 것을 확인했습니다. 다만 .gitignore 하나만 보므로, 상위 디렉터리의 .gitignore 나 .git/info/exclude, core.excludesFile이 함께 걸리는 경우는 반영되지 않습니다.

알아두면 좋은 점

  • .gitignore 파일 하나만 봅니다. 상위 디렉터리의 .gitignore, .git/info/exclude, core.excludesFile은 반영하지 않습니다.
  • 이미 추적 중인 파일은 무시 규칙과 상관없이 계속 추적됩니다. git rm --cached로 색인에서 빼야 무시가 시작됩니다.
  • 계산 로직은 실제 git check-ignore와 61가지 사례에서 대조해 모두 일치하는 것을 확인했습니다.
  • 넣은 내용은 브라우저 안에서만 처리되며 서버로 전송되지 않습니다.

함께 보면 좋은 도구

마지막 검증: 2026년 8월 30일 · 결과는 참고용 추정치입니다.