Type something to search...

03 crlf

git명령어를 사용하다 보면 간간히 이런 메시지를 볼수 있다.

도대체 무슨 소리인지 모르겠지만 LF 와 CRLF 라는 키워드가 포함된 메시지가 자주 보인다. 위 메시지를 번역하면 **경고: ‘pages/api/comment/[id.ts]‘의 작업 복사본에서 다음 번 Git가 터치할 때 LF가 CRLF로 대체됩니다 **라는 의미라고 한다. LF 가 CRLF로 바뀐다는데 이 두개가 무엇인지 알아보자.


🔒원인

LF, CRLF 는 구식 타자기에서 비롯된 단어로

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

위의 변수를 git 에 설정한다

  • core.autocrlf = true CRLF > LF 변경
  • core.autocrlf = false 기본 설정 플랫폼(OS) 상관없이 줄바꿈에 대한 문자열 그대로 인식해 저장 (문제발생 가능성 존재)
  • core.autocrlf = input LF를 line ending으로 사용한다.
  • 작성예시
    • window
1
git config --global core.autocrlf true
  • mac/linux
1
git config --global core.autocrlf input