[ERROR] warning: LF will be replaced by CRLF the next time Git touches it

 

윈도우에 셋팅 후 위와 같은 에러가 발생했다. 유닉스 시스템에서는 한 줄의 끝이 LF(Line Feed)로 이루어지는 반면, 윈도우에서는 줄 하나가 CR(Carriage Return) LF(Line Feed), 즉 CRLF로 이루어지기 때문이다. 따라서 어느 한 쪽을 선택할지 Git에게 혼란이 온 것이다.

 

 

LF(Line-Feed)

  • Mac, Linux (Unix 계열) 줄바꿈 문자열 = \n 
  • ASCII 코드 = 10
  • 커서 위치는 그대로 두고 종이의 한라인 위로 올리는 동작
  • 현재 위치에서 바로 아래로 이동
  • 종이를 한칸올리기

 

CR(Carriage-Return)

  • Mac 초기 모델 줄바꿈 문자열 = \r
  • ASCII 코드 = 13
  • 커서 위치를 맨앞으로 옮기는 동작
  • 커서 위치를 앞으로 이동 

 

CRLF (Carriage-Return+Line-Feed)

  • Windows, DOS 줄바꿈 문자열 = \r\n
  • CR(\r) + LR(\n) 두 동작을 합쳐서 (\r\n)
  • 커서를 다음라인 맨앞으로 옮겨주는 동작

 

이렇게 플랫폼(OS)마다 줄바꿈을 바라보는 문자열이 다르기에
형상관리를 해주는 Git이 바라볼 땐 둘 중 어느 쪽을 선택할지 몰라 경고 메세지를 띄워준 것.

 

 

[ 해결방안 ]

autocrlf 사용

check-in, check-out할 때 파일을 어떻게 처리할지 설정하는 변수

+ 시스템 전체 적용하고 싶다면 --global 옵션 추가하고
전체가 아닌 해당 프로젝트에만 적용하고싶다면 옵션을 빼주면 된다.

  • core.autocrlf = true

CRLF > LF 변경

  • core.autocrlf = false

기본 설정
플랫폼(OS) 상관없이 줄바꿈에 대한 문자열 그대로 인식해 저장 (문제발생 가능성 존재)

  • core.autocrlf = input

LF를 line ending으로 사용한다.

 

 

Windows, DOS 명령어

git config --global core.autocrlf true

 

Linux, MAC 명령어

git config --global core.autocrlf input

 

 

 

 

Ref )

[블로그] [Git 경고 메세지] LF will be replaced by CRLF in 해결 방안

[블로그] Git 에러 CRLF,LF 핸들링 방법

[블로그] Git 설정 CRLF,LF

[블로그] Git에서 CRLF 개행문자차이로인한 문제 해결

[블로그] CR, LF란 무엇인가?

[외국 블로그] 줄바꿈에 대해 자세히 적혀있음