본문 바로가기
프로그래밍/Git

[Git] add LF will be replaced by CRLF warning 해결

by 서울에서 살아가기 2023. 7. 7.

 

 

 

git에 레파지토리를 생성하여 기존에 있던 프로젝트를 git add명령어를 수행하면 아래와 같은 경고가 발생할 수 있습니다. 오류가 아닌 경고여서 지나칠 수도 있겠지만 그대로 두었다가 나비효과처럼 다른 오류로 이어질 수 있는 상황을 만들고 싶지 않아 해결하는 과정을 공유해 보겠습니다.

 

> git add .
warning: in the working copy of 'gittest.txt', 
LF will be replaced by CRLF the next time Git touches it

위와 같은 warning 경고문이 여러 줄로 표출되어서 처음 겪으시는 분들은 살짝 당황할 수도 있을 것 같습니다. (저는 절대 당황하지 않았습니다....)

 

 

 문제 발생 이유

경고 메시지로 표출되는 LFCRLF는 OS에 따라 다르게 사용되고 있는 줄 바꿈 용어입니다. Git에서 LFCRLF 중 어느 줄 바꿈 동작을 사용해야 하는지 선택할 수 없어 경고 메시지가 발생하는 것입니다.

 

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

 

1. LF(Line-Feed)는 무엇인가?

Linux(Unix) 시스템에서 사용되는 줄 바꿈 문자열(\n)입니다. 커서는 현재 위치 그대로 두고 줄만 한 줄 위로 변경되는 동작입니다.

 

2. CRLF(Crriage Return Line-Feed)는 무엇인가?

Windows 시스템에서는 사용되는 줄 바꿈 문자열(\r\n)입니다. 줄 바꿈을 한 후에 커서를 맨 앞쪽으로 이동합니다. 해당 동작은 Windows 데스크톱에서 엔터키를 눌렀을 때 발생하는 동작입니다.

 

 

 

 해결 방법

git에서 --global 옵션은 전체 프로젝트에 적용한다고 설정하는 것이니 대상 프로젝트만 적용하고 싶다면 --global 옵션을 제외하면 됩니다.

 

 

윈도우 사용자

해당 명령어는 Git 저장소에서 가져올 때는 LF -> CRLF로 변경하고, 작업한 PC에서 git 저장소로 보낼 때는 CRLF -> LF로 변경하는 명령어입니다. 자동 변환 되는 명령어이므로 설정을 적용한 후에 경고메시지는 지속적으로 표출될 수 있습니다.

git config --global core.autocrlf true

 

 

 

프로젝트를 진행하는 팀원분들이 모두 같은 OS를 사용한다면 아래 명령어를 사용하시면 됩니다. 해당 명령어는 Git 저장소에서 LF, CRLF 관련 자동 변환을 비활성화합니다. 저 같은 경우에는 미래에도 팀원 모두 같은 Windows OS를 사용할 것이므로 아래 명령어를 적용했습니다.

git config --global core.safecrlf false

 

단, 여러 OS를 사용하시는 환경이라면 LF, CRLF이 변환되지 않아 문제를 초래할 수 있습니다.

 

 

리눅스, 유닉스 사용자

git config --global core.autocrlf input

 

반응형

댓글