Git에서 디렉터리(폴더)를 제외하는 방법
끝 슬래시를 통한 디렉터리 한정 매칭, 저장소 루트 상대 경로와 재귀 탐색의 차이, 빈 폴더 구조를 유지하기 위한 .gitkeep 활용법 완벽 정리.
Git 패턴 끝에 슬래시(/)를 추가하면 Git은 동일한 이름을 가진 일반 파일을 건너뛰고 오직 디렉터리만을 대상으로 제외 여부를 판별합니다:
# Matches only directories named "build/" (e.g. /build/, /src/build/)
build/
# Matches BOTH a directory named "build" AND a file named "build"
build폴더를 제외하고자 할 때는 반드시 끝에 슬래시(/)를 붙이세요. 확장자가 없는 실행 스크립트나 동명의 일반 파일이 의도치 않게 무시되는 문제를 방지합니다.
시작 부분에 슬래시가 없는 폴더명은 프로젝트의 어느 깊이에 있든 모든 일치하는 폴더에 적용됩니다:
# Matches "logs/" anywhere in the repository: /logs/, /apps/web/logs/, etc.
logs/
# Anchored: Matches "logs/" ONLY at the repository root
/logs/상위 폴더는 유지한 채 그 내부의 특정 하위 폴더만 제외해야 할 때는 glob 와일드카드와 디렉터리 경로를 조합합니다:
# Ignore any folder named "temp" inside any "build" directory
build/**/temp/
# Ignore all subdirectories inside packages except package files
packages/*/dist/Git은 파일 단위로 추적하므로 빈 폴더 자체는 커밋할 수 없습니다. uploads/나 logs/처럼 빈 폴더 구조를 저장소에 유지하려면 .gitkeep 관례를 적용합니다:
# 1. Ignore everything inside uploads/
uploads/*
# 2. But whitelist the .gitkeep file inside it
!uploads/.gitkeep상위 폴더 자체가 제외되어 있으면 느낌표(!)로 하위 폴더를 직접 다시 포함할 수 없습니다. 폴더 내부 요소를 와일드카드로 제외한 후 대상을 지정해야 합니다:
# 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이 폴더 탐색 자체를 건너뛰지 않고 내부 파일들만 안전하게 제외합니다.
.gitignore 가이드 및 기술 리퍼런스
이미 커밋되어 추적 중인 파일을 제외하는 방법
.gitignore를 추가하기 전에 실수로 커밋해 버린 설정 파일이나 빌드 결과물을 인덱스에서 안전하게 지우는 완벽 가이드.
.gitignore 문법 및 패턴 매칭 가이드
패턴 형식, 와일드카드 글로빙, 선행/후행 슬래시의 역할, ! 부정 규칙 사용 시 주의사항, 문자 범위 지정 등 Git 무시 문법의 모든 것.
모던 기술 스택을 위한 .gitignore 실전 예제
주요 언어, 백엔드 프레임워크, 게임 개발, 모바일 앱, 컨테이너 환경을 위해 엄선된 실용적인 .gitignore 템플릿 모음.