평소와 같이 git add .
을 하는 순간
warning: LF will be replaced by CRLF in (파일경로)
The file will have its original line endings in your working directory
와 같은 에러 메시지가 발생했다. 이는 윈도우에서 발생하는 에러 메시지로, 만약 유닉스 OS(맥)을 쓰고 있다면 LF
와 CRLF
의 위치가 반대되어 나올 것이다.
따라서 에러를 해결하기 위해 발생한 이유와 해결 방법에 대해 알아보겠다!
먼저 에러 메시지에 나오는 LF와 CRLF가 어떤건지 먼저 확인해보자. 이들은 줄을 바꾸는 방식을 의미한다. typewriter
라는 타자기에서 유래한 단어이다.
LF는 Line-Feed
의 약자이다.
단어가 타자기에서 비롯되었듯이, 커서는 그 자리에 둔 상태에서 종이만 한 줄을 올리는 동작을 말한다.
Mac, Linux(Unix)에서 사용되는 줄바꿈 문자열(\n)이다.
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
감사합니다 덕분에 문제가 쉽게 해결되었어요!