# .gitignore 기본

## 필수 항목

프로젝트를 만들 때 `.gitignore` 에 반드시 다음을 넣습니다.

```gitignore
# 개발 문서 (요청 메모·PRD·todo 등) — 루트와 하위 폴더 모두
docs/
**/docs/
```

| 항목 | 왜 |
|---|---|
| `docs/` | 루트의 개발 문서 폴더(요청 메모, 기획, 할 일 등)는 개인·팀 작업 문서라 코드 저장소에 섞지 않는다 |
| `**/docs/` | `backend/docs/`, `frontend/docs/` 처럼 하위 폴더 안의 문서 폴더도 재귀적으로 제외 |

> 저장소가 **문서 자체를 관리하는 용도**(예: 프로토콜 계약 저장소, 이 문서 사이트)라면 이 규칙의 예외입니다. 그 경우 README 에 예외임을 적습니다.

## 권장 항목 (Node.js / Next.js / NestJS)

```gitignore
# 의존성
node_modules/

# 빌드 산출물
dist/
build/
.next/
out/
coverage/

# 환경변수·비밀값
.env
.env.*
!.env.example

# 로그
logs/
*.log

# OS·편집기
.DS_Store
Thumbs.db
.vscode/
.idea/
```

- `.env.example` 처럼 **비밀값 칸을 비운 견본**은 예외로 포함시켜, 어떤 값이 필요한지 알 수 있게 합니다.
- 키 파일(`*.pem`, `*.key`, 서명 키스토어 등)은 프로젝트에 맞게 추가합니다.

## Windows 에서 `nul` 파일 오류

Windows 에서 `git add` / `git commit` 중 `nul` 관련 오류가 나면, 작업 폴더에 실수로 생긴 `nul`·`NUL` 파일이 원인인 경우가 많습니다. 해당 파일을 지운 뒤 다시 진행합니다.

```bash
rm nul
```

> 왜 — Windows 에서 `> nul` 리다이렉트를 POSIX 셸에서 쓰면 `nul` 이라는 이름의 실제 파일이 생기고, 이 이름은 Windows 예약어라 git 이 처리하지 못합니다.
