본문 바로가기
SCM(형상 관리)/VCS | Git(GitHub)

[Git 에러] LF will be replaced by CRLF (CRLF will be replaced by LF) 오류 해결 방법

by 카랑현석 2024. 4. 2.

문제 상황

다른 로컬 컴퓨터에서 AI 관련 작업한 코드를 받아서 필자의 리포지토리에 한꺼번에 commit 하려고 했다.

 

staging area에 올릴려고 git add . 명령어를 치는데 아래 사진과 같은 오류가 발생했다.

주요 오류 메시지는 'LF will be replaced by CRLF' 가 있거나 반대로 'CRLF will be replaced by LF' 가 있는 경우이다.

 

문제 원인

Windows 쓰는 개발자와 Mac/Linux을 쓰는 개발자가 Git으로 협업을 할 때 생기는 문제이다.

이 에러를 Whitespace 에러 라고 한다.

 

[한 줄의 끝을 처리하는 방식]

Windows : CR(Carriage Return)와 LF(Line Feed)인 CRLF로 이루어져 있다.

Unix : LF(Line Feed)인 LF로 이루어져 있다.

Git 입장에서 이 두개가 혼합되어 있는 경우 어느 것을 선택할지가 혼란이 온 것이다.

 

[오류 문구]

Unix 사용자 : CRLF will be replaced by LF in ~

Windows 사용자 : LF will be replaced by CRLF in ~

 

문제 해결

core.autocrlf 기능을 키면 Git이 CRLF와 LF을 자동으로 변환해준다.

예를 들어,

- commit 과 같이 개발자가 깃(Git)에 코드를 추가할 때는 CRLF -> LF 로 변환

- clone 과 같이 깃(Git)의 코드를 개발자가 조회할 때는 LF -> CRLF 로 변환

 

[Windows OS 사용자]

git config --global core.autocrlf true

 

* 변환이 항상 실행되도록 한다.

* 단, 시스템 전체가 아닌 현재 프로젝트에만 적용하고 싶은 경우 --global 옵션을 뺀다.

[Linux/MAC OS 사용자]

git config --global core.autocrlf true input

 

* 조회 시 LF->CRLF로 변환하는 것을 원치 않을거기 때문에 input 명령어를 추가해 단방향으로만 변환이 되도록 한다. 

 

[core.autocrlf 기능 끄기]

 

core.autocrlf 기능을 끄고 싶다면 아래 명령어를 사용한다.

git config --global core.safecrlf false

 

참고자료 : https://git-scm.com/book/en/v2/Customizing-Git-Git-Configuration#Formatting-and-Whitespace