[GitHub 100일 챌린지] Day 16 - .gitignore 이해하기
[GitHub 100일 챌린지] Day 16 - .gitignore 이해하기
100일 챌린지 Day 16 - Git이 무시해야 할 파일을 지정합니다
배울 내용
- .gitignore가 필요한 이유
- .gitignore 기본 문법
- 자주 무시하는 파일들
Topic1. .gitignore가 필요한 이유
.gitignore = Git이 추적하지 않을 파일 목록
왜 필요한가?
문제 상황:
1
2
3
4
5
6
7
프로젝트 폴더:
my-project/
├── app.js ✅ 필요
├── package.json ✅ 필요
├── node_modules/ ❌ 불필요 (매우 큼)
├── .env ❌ 비밀 정보
└── .DS_Store ❌ Mac 시스템 파일
모두 업로드하면:
1
2
3
4
5
❌ 문제점:
1. 저장소 크기 폭증 (GB 단위)
2. 비밀번호/API 키 노출
3. 다운로드 시간 증가
4. 불필요한 충돌 발생
.gitignore 사용 후:
1
2
3
4
5
✅ 해결:
1. 필요한 파일만 추적
2. 비밀 정보 보호
3. 빠른 clone/push
4. 깔끔한 Repository
무시해야 할 파일 종류
1. 빌드 결과물:
1
2
3
4
dist/
build/
*.exe
*.jar
→ 소스 코드로 재생성 가능
2. 의존성 패키지:
1
2
3
node_modules/
vendor/
venv/
→ package.json/requirements.txt로 설치
3. 환경 설정:
1
2
3
.env
.env.local
config.local.js
→ 비밀 정보 포함
4. 에디터/IDE 설정:
1
2
3
.vscode/
.idea/
*.swp
→ 개인 설정
5. OS 생성 파일:
1
2
3
.DS_Store (Mac)
Thumbs.db (Windows)
desktop.ini
→ 시스템 파일
6. 로그/캐시:
1
2
3
*.log
.cache/
tmp/
→ 임시 파일
해보기: 무시할 파일 찾기
1
2
3
4
1. 자신의 프로젝트 폴더 열기
2. 용량 큰 폴더 확인 (node_modules 등)
3. 비밀 정보 파일 확인 (.env 등)
4. 이들을 .gitignore에 추가할 준비
결과: 어떤 파일을 무시해야 하는지 이해할 수 있습니다
Topic2. .gitignore 기본 문법
.gitignore 파일 작성 규칙을 배워봅시다.
기본 규칙
1. 파일 무시:
# 특정 파일
secret.txt
# 확장자
*.log
*.tmp
# 여러 확장자
*.exe
*.dll
*.so
2. 폴더 무시:
# 폴더 (슬래시 필수)
node_modules/
dist/
.cache/
# 모든 하위 폴더
**/logs/
3. 패턴 매칭:
# 모든 .log 파일
*.log
# test로 시작하는 파일
test*
# 숫자로 끝나는 .txt
*[0-9].txt
4. 예외 처리:
# 모든 .log 무시
*.log
# 하지만 important.log는 추적
!important.log
5. 주석:
# 이것은 주석입니다
*.log # 라인 끝 주석도 가능
경로 규칙
절대 경로 (루트부터):
# 루트의 config.txt만
/config.txt
# 하위 폴더의 config.txt는 무시 안 함
상대 경로 (어디서나):
# 모든 위치의 temp 폴더
temp/
# 모든 위치의 *.log
*.log
특정 위치만:
# src 폴더의 test만
src/test/
# docs 폴더의 draft만
docs/draft/
실전 예시
Node.js 프로젝트:
# Dependencies
node_modules/
# Build output
dist/
build/
# Environment variables
.env
.env.local
# Logs
*.log
npm-debug.log*
# OS files
.DS_Store
Thumbs.db
Python 프로젝트:
# Virtual environment
venv/
env/
.venv/
# Python cache
__pycache__/
*.py[cod]
*$py.class
# Distribution
dist/
build/
*.egg-info/
# Environment
.env
해보기: .gitignore 파일 만들기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
1. Repository 루트에서 "Add file" 클릭
2. 파일명: .gitignore (점 포함!)
3. 내용 입력:
# 로그 파일
*.log
# 임시 파일
*.tmp
temp/
# 환경 설정
.env
4. "Commit new file" 클릭
결과: .gitignore 파일이 생성되고 규칙이 적용됩니다
Topic3. 자주 사용하는 패턴
실무에서 많이 쓰는 .gitignore 패턴 모음입니다.
개발 환경별
Node.js / JavaScript:
node_modules/
npm-debug.log
yarn-error.log
.npm
.yarn-integrity
dist/
build/
coverage/
.env
.env.local
.env.*.local
.DS_Store
Python:
__pycache__/
*.py[cod]
*$py.class
venv/
ENV/
env.bak/
*.so
*.egg
*.egg-info/
dist/
build/
.pytest_cache/
.coverage
htmlcov/
.env
Java:
*.class
*.jar
*.war
*.ear
target/
build/
out/
.gradle/
.idea/
*.iml
.env
application-local.properties
에디터/IDE별
VS Code:
.vscode/
*.code-workspace
IntelliJ / PyCharm:
.idea/
*.iml
*.iws
out/
Sublime Text:
*.sublime-workspace
*.sublime-project
OS별
macOS:
.DS_Store
.AppleDouble
.LSOverride
._*
Windows:
Thumbs.db
ehthumbs.db
Desktop.ini
$RECYCLE.BIN/
Linux:
*~
.nfs*
종합 템플릿
# ===== Dependencies =====
node_modules/
vendor/
venv/
# ===== Build Output =====
dist/
build/
out/
*.exe
*.jar
# ===== Environment =====
.env
.env.local
.env.*.local
config.local.*
# ===== IDE =====
.vscode/
.idea/
*.iml
# ===== OS =====
.DS_Store
Thumbs.db
desktop.ini
# ===== Logs & Cache =====
*.log
.cache/
tmp/
temp/
# ===== Test Coverage =====
coverage/
.nyc_output/
# ===== Others =====
*.swp
*.swo
*~
gitignore.io 활용
온라인 생성기:
1
2
3
4
5
6
7
1. gitignore.io 방문
2. 사용하는 언어/도구 입력:
- Node
- VisualStudioCode
- macOS
3. "생성" 클릭
4. 복사해서 .gitignore에 붙여넣기
장점:
1
2
3
✅ 언어별 최적화
✅ 자동 업데이트
✅ 놓치기 쉬운 파일 포함
해보기: gitignore.io 사용하기
1
2
3
4
1. gitignore.io 접속
2. "Node,VisualStudioCode,macOS" 입력
3. 생성된 내용 확인
4. .gitignore에 추가
결과: 전문가 수준의 .gitignore를 빠르게 만들 수 있습니다
정리
완료 체크:
- .gitignore의 필요성을 이해했다
- 기본 문법을 사용할 수 있다
- 자주 쓰는 패턴을 알고 있다
.gitignore 핵심:
1
2
3
4
5
6
7
8
9
10
11
12
13
무시할 대상:
❌ 빌드 결과 (dist/, build/)
❌ 의존성 (node_modules/, venv/)
❌ 비밀 정보 (.env)
❌ 개인 설정 (.vscode/, .idea/)
❌ OS 파일 (.DS_Store)
❌ 로그 (*.log)
추적할 대상:
✅ 소스 코드
✅ 설정 템플릿 (.env.example)
✅ 문서 (README.md)
✅ 테스트 코드
주의사항:
1
2
3
4
5
6
⚠️ 이미 추적 중인 파일은
.gitignore 추가해도 계속 추적됨
→ git rm --cached 필요
⚠️ .env 등 비밀 파일은
처음부터 .gitignore에 추가!
다음: Day 17 - 언어별 .gitignore 작성 →
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.
