[Git] LF will be replaced by CRLF in 에러 해결법

realzu·2022년 7월 26일
5

🧡 about Git

목록 보기
2/4
post-thumbnail

평소와 같이 git add .을 하는 순간

warning: LF will be replaced by CRLF in (파일경로)
The file will have its original line endings in your working directory

와 같은 에러 메시지가 발생했다. 이는 윈도우에서 발생하는 에러 메시지로, 만약 유닉스 OS(맥)을 쓰고 있다면 LFCRLF의 위치가 반대되어 나올 것이다.

따라서 에러를 해결하기 위해 발생한 이유와 해결 방법에 대해 알아보겠다!


먼저 에러 메시지에 나오는 LF와 CRLF가 어떤건지 먼저 확인해보자. 이들은 줄을 바꾸는 방식을 의미한다. typewriter라는 타자기에서 유래한 단어이다.

📍 LF란?

LF는 Line-Feed의 약자이다.
단어가 타자기에서 비롯되었듯이, 커서는 그 자리에 둔 상태에서 종이만 한 줄을 올리는 동작을 말한다.

Mac, Linux(Unix)에서 사용되는 줄바꿈 문자열(\n)이다.

📍 CRLF란?

CRLF는 Carriage Return Line-Feed의 약자이다.
여기서 Carriage Return이란 문장이 끝에 다다르면 커서는 위아래 이동 없이 가장 앞으로 이동하는 동작을 말한다.
즉, CRLF는 커서를 다음 라인의 맨 앞으로 이동하는 동작이다.

Windows에서 사용되는 줄바꿈 문자열(\r\n)이다.

📍 에러 발생 이유

OS마다 사용되는 줄바꿈 문자열이 다르기 때문에 git에서 어떤 의미로 받아들여야 할지 몰라 에러 메시지가 나타난 것이다. 에러를 해결하지 않으면 줄바꿈 문자에 의해 커밋 내역이나 설정 파일들이 이상해질 수 있으니 통일시키는 것을 추천한다.

👊 해결 방법

core.autocrlf 설정을 통해 해결할 수 있다. Git에 코드를 커밋할 때 LF와 CRLF를 서로 변환해주는 기능이다. 또한 시스템 전체에 적용할 것이라면 global 옵션을 추가해주고, 해당 프로젝트에만 적용한다면 제외하여 작성해주면 된다.

각각의 체제에 맞게 아래의 명령어를 선택하여 입력해준다.

👆 Windows, DOS 명령어

$git config core.autocrlf true
$git config --global core.autocrlf true

global 추가 유무에 따라서 둘 중에 하나를 선택해 입력한다.

👆 Linux, Mac 명령어

$git config core.autocrlf input
$git config --global core.autocrlf input

마찬가지로 global 여부에 따라 입력 방법이 두 가지로 나뉜다.

👆 기능 해제

$git config --global core.autocrlf false

위의 방법과 달리, core.autocrlf 기능을 해제하는 방법도 있다. 해제함으로써 줄바꿈 문자열을 변환하지 않아도 에러 메시지를 안뜬다. 위의 방법과 해당 방법 중에서 선택하여 입력하면 될 것 같다.


나의 경우, Windows이기 때문에 global 옵션과 함께 아래의 명령어를 입력해주었다.

이후 git add .와 Commit까지 모두 문제없이 정상적으로 진행되어 에러를 해결하였다!


🔎 참고
https://dabo-dev.tistory.com/13
https://velog.io/@jakeseo_me/LF%EC%99%80-CRLF%EC%9D%98-%EC%B0%A8%EC%9D%B4-Feat.-Prettier
https://hbase.tistory.com/334

profile
부딪히지 않으면 아무 일도 일어나지 않는다 👊

1개의 댓글

comment-user-thumbnail
2023년 9월 1일

감사합니다 덕분에 문제가 쉽게 해결되었어요!

답글 달기