·2분 읽기
CRLF LF 변환 — Windows·Mac 줄바꿈 호환과 Git 사고 방지
CRLF와 LF 줄바꿈 차이로 발생하는 Git 사고를 방지하는 변환 가이드예요. .gitattributes 설정, autocrlf, 변환 도구 활용까지 한 번에 정리했어요.

🔠
대소문자 변환 바로 사용하기
텍스트를 다양한 형식으로 변환하세요
→
CRLF와 LF 차이가 진짜 문제인가요?
맞아요. 매일 일하다 보면 한 번씩 사고 나는 항목이 줄바꿈이에요.
**CRLF (\r\n)**: Windows 표준. 텍스트 파일 한 줄 끝에 캐리지 리턴(CR) + 라인 피드(LF) 두 문자.
**LF (\n)**: Mac·Linux 표준. 라인 피드 한 문자.
같은 코드 파일을 Windows와 Mac에서 번갈아 편집하면 Git이 줄바꿈 차이 때문에 "전체 파일이 변경됐다"고 표시. 실제 변경은 1줄인데 100줄 diff가 뜨는 사고가 생겨요.
방지 1·2 — .gitattributes와 autocrlf
**방지 1 — .gitattributes 설정 (가장 강력)**
프로젝트 루트에 `.gitattributes` 파일 생성:
```
* text=auto
*.sh text eol=lf
*.bat text eol=crlf
*.png binary
*.jpg binary
```
- `text=auto`: Git이 자동 감지
- `eol=lf`: 강제 LF (셸 스크립트)
- `eol=crlf`: 강제 CRLF (Windows 배치)
- `binary`: 변환 안 함 (이미지·폰트)
팀원 모두 .gitattributes 적용되니 OS 다 달라도 안전.
**방지 2 — git config autocrlf**
`git config --global core.autocrlf input` (Mac/Linux)
`git config --global core.autocrlf true` (Windows)
- input: commit 시 LF로 변환, checkout 시 그대로
- true: commit 시 LF, checkout 시 CRLF로 변환
- false: 변환 안 함 (.gitattributes 있으면 권장)
방지 3·4 — 에디터와 도구
**방지 3 — 에디터 기본 줄바꿈 통일**
VSCode 설정 (`settings.json`):
```json
{
"files.eol": "\n"
}
```
- `\n`: LF (Mac/Linux 호환)
- `\r\n`: CRLF (Windows 전용)
프로젝트 워크스페이스 단위로 LF 통일이 일반적. 모든 OS 호환.
**방지 4 — 일괄 변환 도구**
기존 파일 일괄 변환 시 명령줄 도구 활용.
**dos2unix (Linux/Mac)**
```bash
dos2unix file.txt
find . -name '*.js' -exec dos2unix {} \;
```
**unix2dos (Windows)**
```bash
unix2dos file.txt
```
**sed (모든 OS)**
```bash
sed -i 's/\r$//' file.txt # CRLF → LF
```
Toolkio 활용 + 사고 사례
**Toolkio 변환 도구 활용 4단계**
1. 변환할 텍스트 입력란에 붙여넣기
2. 'CRLF → LF' 또는 'LF → CRLF' 선택
3. 변환 결과 즉시 미리보기
4. 복사 → 본인 프로젝트에 붙여넣기
작은 파일·코드 일부 변환에 적합. 대량 파일은 dos2unix CLI 권장.
**실제 사고 사례**
사례 1: Mac 개발자가 작성한 셸 스크립트를 Windows에서 편집 후 Linux 서버에 올림 → 줄 끝에 보이지 않는 \r 때문에 스크립트 실행 에러 (`bad interpreter: /bin/bash\r`)
해결: `.gitattributes`에 `*.sh eol=lf` 추가
사례 2: Windows 팀과 Mac 팀이 같이 작업 → Git diff에 "전체 파일 변경" 표시. 실제 변경 라인 1개. PR 리뷰 불가능.
해결: `core.autocrlf input` 통일 + `.gitattributes` 적용
사례 3: SQL 파일 줄바꿈이 BOM과 함께 깨져서 DB 에러
해결: 에디터 인코딩 'UTF-8 (BOM 없이)' + LF로 통일
3가지 사고 예방하는 가장 안전한 방법은 **프로젝트 시작 시 `.gitattributes` 작성 + 팀 전체 autocrlf 통일**이에요. 30분 투자면 평생 사고 0.