프로그래밍 언어/Shell

깃허브 커밋 시 윈도우, 맥 줄바꿈 문자 에러 해결하기

트리맨스 2021. 5. 11. 01:16
반응형

 

최근에 42서울을 진행하며 클러스터와 집을 번갈아가면서 코딩을 진행했다. 하지만 norm 에서 자꾸 막힌다. 에러 메시지를 보니 자꾸 42헤더 부분에서 뭔가 문제가 있는 것 같다. 별 짓거리를 다 해봐도 그자리에선 해결이 안되어서 결국 다시 코딩했다....뺨에 흐르는건 눈물인가? 여튼 고생좀 했다.

원인을 알아보기 위해서 이것저것 알아보던 중, PC 운영체제마다 줄바꿈 문자가 다르다는 것을 알게 되었다. 추측컨대, 윈도우에서 작업한 줄바꿈이 맥에서 작동하지 않는 것 같다. 각 운영체제마다 줄바꿈 문자가 다르다는 것을 알게 되었으니, 개행문자에 대해서 잠깐 정리해 보자.

개행문자는 줄바꿈문자 라고도 말한다. 두개가 있는데 하나는 LF (Line Feed, ascii : 10, \n) 이고 커서를 한칸 아래로 이동하여 새 라인을 추가한다. 나머지 하나는 CR (Carrige Return, ascii : 13, \r) 이며 커서를 맨 왼쪽으로 이동한다. 이 둘은 타자기 시절의 동작에서 유래했다. 타자기에서 줄넘김을 할려면 커서를 맨 왼쪽으로 이동하는 동작과 한칸 아래로 이동하는 동작, 두개가 있어야 하기 때문이다.

여하튼 모두 다른 문자고 운영체제마다 다른 방식을 사용하기 때문에, 일단 알아두자.

윈도우 리눅스
CR + LF LF LF (OSX 9 이전 : CR)
\r\n \n \n (OSX 9 이전 : \r)

 

오케이, 일단 운영체제마다 개행 문자가 다르다는 것을 알았다. 대부분의 개발자들은 깃허브를 이용해서 작업할 것이다. 당연하게도 실제 구동 환경과 개발 환경이 같으면 좋겠지만, 대부분은 그렇지 않을 것이다. Git에서는 파일의 줄바꿈 문자를 설정할 수 있다. 운영체제를 넘나들며 파일이 손상되고 인식에 문제가 발생하는 것을 막게 할 수 있다.

3가지 옵션이 있다. true, input, false 인데, true는 커밋할 때 window 로컬 저장소에서 설정하면 checkout 할때 LF가 CRLF로 바뀐다. input은 알아서 CRLF를 LF로 변경해준다. 마지막으로 false는 윈도우에서는 CRLF, 맥과 리눅스에서는 LF를 사용하게 한다.

설정은 아래 코드를 따라하자.
git config --global core.autocrlf 옵션

내 경우에는 둘다 input으로 설정해 두었다. 나중에 실제로 사용해서 크로스 플랫폼의 설움을 조금이나마 달래봐야겠다. 맥 뽐뿌가 심하게 오는 날이다.

 

참고 링크 : https://git-scm.com/book/ko/v2/Git맞춤-Git-설정하기

반응형