터미널에 git
을 입력하거나 git add .
로 파일을 추가할 때 다음과 같은에러가 뜨는 경우가 있습니다.warning: LF will be replaced by CRLF in src/week02/khkim/Khkim03.java. 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…
경고 메시지가 뜰 것입니다.
core.autocrlf를 켜주자!
Git은 생각보다 똑똑하기에, 이를 자동으로 변환해주는 기능을 가지고 있습니다. 바로 core.autocrlf
라는 기능인데, 이 기능을 켜주면 됩니다.
이 기능을 통해 개발자가 git에 코드를 커밋할 때, CRLF
를 LF
로 변환해주고, git의 코드를 개발자가 조회할 때(Clone 등)에는 LF
를 CRLF
로 변환해줍니다.
변환을 하기 위해 윈도우 사용자라면 다음의 명령어를 입력합니다.
git config --global core.autocrlf true
--global
은 시스템 전체에 해당되도록 하는 옵션으로 프로젝트에만 해당되도록 하려면 해당 옵션을 빼주면 됩니다.
변환을 하기 위해 리눅스 혹은 맥 사용자라면 다음의 명령어를 입력합니다.
git config --global core.autocrlf true input
리눅스 혹은 맥 사용자의 경우, 조회를 할 때 LF를 CRLF로 변환하지 않고 싶어할텐데요. 따라서 input
이라는 명령어를 추가해서 단방향으로만 변환이 이루어지도록 합니다.
혹은 이런 변환 기능을 원하지 않는 경우가 있을 수 있을텐데요. 그냥 에러 메세지를 끄고 알아서 작업하고 싶을 경우는 아래의 명령어로 core.safecrlf
를 끄면 됩니다.
git config --global core.safecrlf false