포스트

[GitHub 100일 챌린지] Day 16 - .gitignore 이해하기

[GitHub 100일 챌린지] Day 16 - .gitignore 이해하기

100일 챌린지 Day 16 - Git이 무시해야 할 파일을 지정합니다

배울 내용

  1. .gitignore가 필요한 이유
  2. .gitignore 기본 문법
  3. 자주 무시하는 파일들

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 라이센스를 따릅니다.