본문 바로가기

유니티/에러 리포트

[Unity] Git Desktop 사용 시 lf will be replaced by crlf the next time git touches it... 해결 방법

반응형

오류 증상

여러 개의 에셋을 하나의 유니티 프로젝트에 받고 깃 데스크탑으로 깃에 올리는 순간 lf will be replaced by crlf the next time git touches it~라는 문구로 시작하는 셀 수도 없는 오류가 발생하였다.

이 이슈는 하나의 써드파티 에셋을 받으면서 발생된것으로 추측되는데, 해당 에셋을 깃에 안 올릴 수 없으니 어떻게 해서든 해결을 해야 했다.


오류 원인

다행히도 원인은 한 가지였는데, OS에 따른 줄 바꿈 문자열의 차이 때문이었다.

다시 말해서, 에셋 제작자마다 에셋을 제작할 때 사용한 OS(Mac, Windows, Linux 등)이 달랐고 문자열 통일이 되지 않았기 때문이다. 이러한 줄바꿈 문자열은 LF, CR, CRLF으로 나뉘게 되고, 이들이 통일되어 있지 않으면 위와 같은 이슈를 발생시킨다.


해결 방법

결론은 에러가 난 문자열을 통일시켜 주면 된다.

하지만 구글링을 해보면 해결책이 꽤나 다양하게 존재하는데, gitIgnore파일의 위치를 바꾸거나 메타 정보를 바꾸는 등 해결했다는 사례가 많다.

 

그러나 이는 근본적인 해결책이 아닐뿐더러 더 많은 오류를 발생시킬 수도 있다.

따라서 결국에는 LF와 RF의 문제를 해결해야 하는데, 두 가지를 자동으로 변환하거나 경고를 무시하게끔 하는 방법이 있다.

 

우선 이 방법은 커맨드 프롬프트로 진행된다.(윈도우의 경우)

따라서 반드시 git이 환경변수에 등록되어 있어야 한다! 그렇지 않으면 아무리 명령어를 입력해 봤자 변화가 없다.

 

만약 환경변수에 등록되어 있다면 다음과 같이 깃 데스크톱에서 Repository로 들어가서 커맨드를 열어준다.

Git Desktop App

 

혹은 윈도우 커맨드 프롬프트로 접근을 해도 된다.

그리고 나면 아래의 두 가지 방법을 사용해 볼 수 있다.

 

1. 자동으로 선택되게 하는 방법

커맨드 프롬프트를 열고 아래와 같이 입력한다.

git config core.autocrlf true

 

만약 윈도우 커맨드 프롬프트에서 사용 중이고, 모든 프로젝트 전체에 적용하고 싶다면 아래처럼 입력한다. (위의 경우 해당 프로젝트에만 적용된다)

git config --global core.autocrlf input true

 

2. 경고를 무시하고 꺼버리는 방법

위의 방법대로 했는데도 여전히 에러 메시지를 뱉는다면 그냥 해당 문제를 깃에서 고려하지 말도록 기능을 꺼버리면 된다.

 

해당 프로젝트에만 적용할 경우 아래와 같이 입력한다.

git config core.autocrlf false

 

모든 프로젝트에 적용할 경우 --global을 추가한다.

git config --global core.autocrlf false

 

 

필자의 경우 1번으로 해결되지 않아 그냥 경고를 꺼버리고 깃에 올렸다. OS가 바뀌게 될 경우 문제가 될 수도 있으나, 계속 윈도우를 사용할 예정이라 아직까지는 어떠한 문제점도 발생하지 않고 있다.

반응형