본문 바로가기
Daily Log/Archive

git에서 crlf 관련 오류가 뜰 때 해결법

by HZie 2020. 8. 3.

늘 안드로이드 스튜디오에서 git으로 올릴 때 crlf 관련 오류가 뜬다. 그래서 crlf가 무엇인지 알아보았다.

간단히 정리하자면 crlf는 줄바꿈을 입력하는 문자라고 한다. 말하자면 개행문자나 EOL같은 것이다. 이는 운영체제마다 다르기 때문에 다른 플랫폼으로도 해당 텍스트를 보내고 싶을 때 변환이 필요하다. 만약 변환을 하지 않고 그대로 올리게 된다면 해당 플랫폼에서 new line이 구분되지 않기도 하고, 일부 프로그램은 새줄 문자가 없으면 오류가 발생하기도 한다.

CR = Carriage Return '\r', 0x0D, 프린터에서 실제 인쇄를 수행하는 장치가 한 줄의 끝에서 시작 위치로 돌아가는 것
: 맥 OS 버전 9 이하
LF = Line Feed, '\n', 0x0A, 프린터에서 종이가 한 줄씩 인쇄되어 나오는 것
: 맥 OS 버전 10부터, 유닉스, 리눅스
CR+LF = Carriage Return + Line Feed
: 윈도우

이를 해결하기 위해서는 어떻게 해야할까?
간단하다. git에서 config를 바꿔주면 된다.
윈도우의 경우: git config --global core.autocrlf true
맥, 리눅스의 경우: git config --global core.autocrlf input

[출처]
https://blog.naver.com/PostView.nhn?blogId=pthread_join&logNo=220720777376&proxyReferer=https:%2F%2Fwww.google.com%2F
https://ko.wikipedia.org/wiki/%EC%83%88%EC%A4%84_%EB%AC%B8%EC%9E%90

+추가

예제를 들어보면 텍스트를 저장할 때
윈도우의 경우: text\r\n
맥/리눅스의 경우: text\n
(\r : Carriage Return, \n: Line Feed)

위와같이 붙는다.

깃에 파일을 올려두면 여러 플랫폼에서 사용할 수도 있기 때문에 혹시나 나타날 수 있는 문제를 해결하기 위해 자동으로 crlf를 수정해주는 설정이 core.autocrlf 설정이다.
기본적으로 윈도우의 경우 \r(carriage-return)을 제거하고 깃에 저장하고, 가져올 때는 \r을 붙여준다.
맥의 경우, \r(carriage-return)을 제거하고 깃에 저장하고, 가져올 때는 그냥 가져오는데, 이는 만약 맥에서 어쩌다가 \r이 붙은 텍스트가 만들어질 수도 있기 때문이다. (ex. 복사 붙여넣기 시)

'Daily Log > Archive' 카테고리의 다른 글

리액트 네이티브 드롭다운 피커  (0) 2022.06.05
LearnOpenGL 코드가 실행되지 않을 때  (2) 2020.09.10

댓글