개발 잘 하고 싶다 => 알고 쓰자/ERROR(삽질) 모음

[Git] warning: CRLF will be replaced by LF in some/file.file 에러

장 상 현 2021. 6. 9.

 

warning: CRLF will be replaced by LF in some/file.file.
The file will have its original line endings in your working directory.

 

맥/리눅스 이용 개발자와 윈도우 개발자가 협업할 때 발생하는 에러

 

왜?


이는 맥 또는 리눅스를 쓰는 개발자와 윈도우 쓰는 개발자가 Git으로 협업할 때 발생하는 Whitespace 에러다. 

 

유닉스 시스템에서는 한 줄의 끝이 LF(Line Feed)로 이루어지는 반면, 

 

윈도우에서는 줄 하나가 CR(Carriage Return)와 LF(Line Feed), 

 

즉 CRLF로 이루어지기 때문이다. 따라서 어느 한 쪽을 선택할지 Git에게 혼란이 온 것이다.

유닉스 OS을 쓰고 있다면 CRLF will be replaced by LF in… 에러 메시지가 뜰 것이고, 

 

윈도우를 사용하고 있다면 LF will be replaced by CRLF in… 에러 메시지가 뜰 것이다.

둘 중 뭐든간에 해결 방법은 같다. 

 

Git은 똑똑해서 이를 자동 변환해주는 core.autocrlf 라는 기능을 가지고 있는데, 이 기능을 켜주기만 하면 된다.

이 기능은 개발자가 git에 코드를 추가했을 때 (예컨대 커밋할 때)에는 CRLF를 LF로 변환해주고, 

 

git의 코드를 개발자가 조회할 때 (예컨대 clone한다거나 할 때)에는 LF를 CRLF로 변환해준다.

 

윈도우 사용자의 경우

 

이러한 변환이 항상 실행되도록 다음과 같은 명령어를 입력한다.

 

물론 시스템 전체가 아닌 해당 프로젝트에만 적용하고 싶다면 —global 을 빼주면 된다.

 

git config --global core.autocrlf true

 

리눅스나 맥을 사용하고 있는 경우

 

조회할 때 LF를 CRLF를 변환하는 것은 원하지 않을 것이다.

 

따라서 뒤에 input이라는 명령어를 추가해줌으로써 단방향으로만 변환이 이루어지도록 설정한다.

 

git config --global core.autocrlf true input

 

 

이러한 변환 기능을 원하지 않는 경우

 

그냥 에러 메시지 끄고 알아서 작업하고 싶은 경우에는

 

아래 명령어로 경고메시지 기능인 core.safecrlf를 꺼주면 된다.

 

git config --global core.safecrlf false

댓글