:bulb: Git에서 파일을 add할 때 발생하는 LF will be replaced by CRLF 경고의 원인과 해결 방법을 작성한다.

[01] Warning 메시지

1
git add 파일명
1
warning: in the working copy of '파일명', LF will be replaced by CRLF the next time Git touches it

[02] 원인: OS별 줄바꿈 문자 차이

운영체제마다 텍스트 파일의 줄바꿈(개행) 문자가 다르다.

OS 줄바꿈 문자 표기
Windows CR + LF \r\n
Linux / macOS LF \n
  • CR (Carriage Return): 커서를 줄의 맨 앞으로 이동
  • LF (Line Feed): 커서를 다음 줄로 이동

Git은 내부적으로 LF를 표준으로 사용한다. Windows 환경에서 core.autocrlf 설정이 true인 경우, checkout 시 LF를 CRLF로 자동 변환하겠다는 의미로 위 경고가 발생한다.

[03] core.autocrlf 설정값

1
2
# 현재 설정 확인
git config --global core.autocrlf
checkout (저장소 → 작업 디렉토리) commit (작업 디렉토리 → 저장소) 권장 환경
true LF → CRLF 변환 CRLF → LF 변환 Windows 전용 프로젝트
input 변환 없음 CRLF → LF 변환 Linux/macOS, 또는 크로스 플랫폼
false 변환 없음 변환 없음 줄바꿈을 직접 관리할 때

[04] 해결 방법

방법 A: .gitattributes 파일 설정 (권장)

레포지토리 루트에 .gitattributes 파일을 생성하거나 편집하여 아래 내용을 추가한다.

1
* text=auto eol=lf
속성 설명
text=auto Git이 텍스트 파일을 자동 감지하여 줄바꿈 정규화
eol=lf 모든 텍스트 파일의 줄바꿈을 LF로 통일

.gitattributes는 레포지토리에 포함되어 모든 협업자에게 동일하게 적용되므로, 개인 설정(core.autocrlf)보다 우선하며 일관성이 보장된다.

방법 B: Git 전역 설정 변경

1
git config --global core.autocrlf input

커밋 시에만 CRLF → LF 변환을 수행하고, checkout 시에는 변환하지 않는다. warning이 사라진다.

이 설정은 개인 환경에만 적용되므로, 팀 프로젝트에서는 .gitattributes 방식을 권장한다.

[05] 기존 파일 줄바꿈 일괄 정규화

.gitattributes 설정 후 기존 파일에도 적용하려면 아래 명령어를 실행한다.

1
2
3
# Git 인덱스 초기화 후 다시 추가
git rm --cached -r .
git reset --hard

이후 변경된 파일이 있으면 커밋하면 된다.

[06] 정리

방법 적용 범위 장점
.gitattributes 레포지토리 전체 (모든 협업자) 일관성 보장, Git에 포함
core.autocrlf 개인 환경 간편한 설정

크로스 플랫폼 프로젝트에서는 .gitattributes* text=auto eol=lf를 설정하는 것이 가장 안정적인 방법이다.