본문 바로가기
Error

[Github / Error] - warning: in the working copy of '.gitignore', LF will be replaced by CRLF the next time Git touches it

by nam_ji 2024. 7. 30.

warning: in the working copy of '.gitignore', LF will be replaced by CRLF the next time Git touches it

에러 발생

  • git add 명령어를 입력하니 위와 같은 에러가 발생했습니다.

에러 원인

  • 원인에 대해서 찾아보니 CRLF와 해결 방안에 대한 설명이 있어 정리해보려고 합니다.

1. CR (Carriage-Return)

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

2. LF (Line-Feed)

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

3. CRLF (Carriage-Return+Line-Feed)

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

4. CRLF 원인은

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

에러 해결 방안

1. autoctlf 사용

  • check-in, check-out 할 때 파일을 어떻게 처리할지 설정하는 변수
  • 시스템에 적용하고 싶다면 --global 옵션을 추가하고 전체가 아닌 해당 프로젝트에만 적용하고 싶다면 옵션을 빼주면 됩니다.
  • core.autocrlf = true
    • CRLF > LF 변경
  • core.autocrlf = false
    • 기본 설정, 플랫폼 (OS) 상관없이 줄바꿈에 대한 문자열 그대로 인식해 저장 (문제 발생 가능성 존재)
  • core.autocrlf = input
    • LF를 line ending으로 사용합니다.

2. Window, DOS 명령어

  • git config --global core.autocrlf true

3. Linux, MAC 명령어

  • git config --global core.autocrlf input