Skip to content
워크플로약 5분 소요Git 2.40+ 표준 검증

Git에서 디렉터리(폴더)를 제외하는 방법

끝 슬래시를 통한 디렉터리 한정 매칭, 저장소 루트 상대 경로와 재귀 탐색의 차이, 빈 폴더 구조를 유지하기 위한 .gitkeep 활용법 완벽 정리.

1. 끝 슬래시의 원칙: build/ vs build

Git 패턴 끝에 슬래시(/)를 추가하면 Git은 동일한 이름을 가진 일반 파일을 건너뛰고 오직 디렉터리만을 대상으로 제외 여부를 판별합니다:

gitignore
# Matches only directories named "build/" (e.g. /build/, /src/build/)
build/

# Matches BOTH a directory named "build" AND a file named "build"
build
모범 사례

폴더를 제외하고자 할 때는 반드시 끝에 슬래시(/)를 붙이세요. 확장자가 없는 실행 스크립트나 동명의 일반 파일이 의도치 않게 무시되는 문제를 방지합니다.

2. 루트 상대 고정 경로 vs 재귀적 매칭

시작 부분에 슬래시가 없는 폴더명은 프로젝트의 어느 깊이에 있든 모든 일치하는 폴더에 적용됩니다:

gitignore
# Matches "logs/" anywhere in the repository: /logs/, /apps/web/logs/, etc.
logs/

# Anchored: Matches "logs/" ONLY at the repository root
/logs/

3. 중첩된 하위 디렉터리와 와일드카드

상위 폴더는 유지한 채 그 내부의 특정 하위 폴더만 제외해야 할 때는 glob 와일드카드와 디렉터리 경로를 조합합니다:

gitignore
# Ignore any folder named "temp" inside any "build" directory
build/**/temp/

# Ignore all subdirectories inside packages except package files
packages/*/dist/

4. .gitkeep을 활용한 빈 폴더 유지법

Git은 파일 단위로 추적하므로 빈 폴더 자체는 커밋할 수 없습니다. uploads/나 logs/처럼 빈 폴더 구조를 저장소에 유지하려면 .gitkeep 관례를 적용합니다:

gitignore
# 1. Ignore everything inside uploads/
uploads/*

# 2. But whitelist the .gitkeep file inside it
!uploads/.gitkeep

5. 제외된 폴더 내 특정 하위 폴더 안전하게 다시 포함하기

상위 폴더 자체가 제외되어 있으면 느낌표(!)로 하위 폴더를 직접 다시 포함할 수 없습니다. 폴더 내부 요소를 와일드카드로 제외한 후 대상을 지정해야 합니다:

gitignore
# Ignore everything inside config/
config/*

# Whitelist production folder and its contents
!config/production/
!config/production/**

자주 묻는 질문 (FAQ)

.gitignore 규칙, 캐싱, 저장소 설정에 대해 개발자들이 가장 자주 묻는 질문과 실전 해결책입니다.

.gitignore에서 folder와 folder/의 차이는 무엇인가요?

'folder/'는 오직 디렉터리에만 매칭됩니다. 슬래시가 없는 'folder'는 같은 이름의 일반 파일과 디렉터리 모두에 매칭됩니다.

Git에서 빈 폴더를 커밋하려면 어떻게 해야 하나요?

폴더 안에 .gitkeep이라는 빈 파일을 생성하고, 'folder/*'로 내부를 제외한 뒤 '!folder/.gitkeep' 규칙을 통해 해당 파일만 예외 처리합니다.

폴더 자체는 남겨두고 안의 내용물만 무시하려면?

'directory/' 대신 'directory/*'를 사용하세요. Git이 폴더 탐색 자체를 건너뛰지 않고 내부 파일들만 안전하게 제외합니다.

← 가이드 읽기전체 생성기에서 열기