Changsoon's Note Backend Developer

CRLF와 LF

LF will replaced by CRLF

인텔리제이에 CheckStyle을 적용하여 코드 컨벤션을 적용하는 일이 있었다.

코드 스타일을 적용을 잘 해도 인텔리제이에서 주의 표시가 나와서 확인해보니, LF will replaced by CRLF라는 경고 메시지가 출력되어서 알아보았다.

CRLF(Carriage Return Line Feed)

먼저 CRLF에 대해서 알아보자.

CSLF는 캐리지 리턴과 라인 피드를 의미하는 조합이다.

텍스트 파일에서 줄 바꿈을 나타내는데 사용된다.

  • Carriage Return(CR) : \r로 표현되며, 커서를 현재 줄의 맨 앞으로 이동시키는 명령이다.
  • Line Feed(LF) : \n로 표현되며, 커서를 다음 줄로 이동시키는 명령이다.

이러한 두 제어 문자가 결합한 형태인 CRLF는 주로 Windows 시스템에서 사용된다.

텍스트 파일에서 줄바꿈을 나타내기 위해 \r\n를 사용한다.

CRLF는 초기 컴퓨터 시스템에서 텍스트를 출력할 대, 프린터가 종이를 반환하면서 새로운 줄로 이동할 필요가 있어 두 개의 문자가 사용되었다.

LF(Line Feed)

하나의 제어 문자로, 커서를 다음 줄로 이동시키는 역할을 한다. 표기는 \n

LF는 주로 Unix와 Linux 시스템, Mac에서 사용된다.

Unix 시스템이 등장하면서, 줄바꿈을 처리하는 방식으로 하나의 문자만 사용하게 되었다.

원인

결과적으로 OS 차이에 의한 Git 설정 이슈이다.

Windows 환경에서 Git을 사용할 때 자주 생기는 문제다.

Git은 기본적으로 Windows에서 CRLF를 사용하고 Unix/Linux/MacOS에서는 LF를 사용한다.

그래서 파일을 커밋하거나 푸시할 때 Git이 줄바꿈 문자를 자동으로 변환하려고 시도하며, 이로 인해 LF will replaced by CRLF 경고 메시지가 발생한다.

수정

이 문제를 해결하려면 Git의 줄바꿈 변환 설정을 조정해야 한다.

이러면 줄바꿈 문자가 일관되게 유지된다.

터미널을 열고 아래의 커맨드를 입력하자.

다른 방법으로는 .gitattributes 파일 사용하는 방법이 있다.

프로젝트 루트에 .gitattributes를 생성하고 * text=auto를 적어넣는다.

인텔리제이 하단부에 line seperator를 설정하는 방법도 있다.

abc