터미널에서의 CRLF 경고

eeensu·2025년 3월 29일
0

용어 정리와 팁

목록 보기
27/27

최근 컴퓨터를 새로 장만했다. 기존 윈도우 10 --> 윈도우 11로 장착하고, cpu와 gpu 등등 업그레이드 하였다. 그리고, 기존 github에 있던 내 레포지토리들을 클론하여 새 컴퓨터에 다운받았다. 그리고, 하나의 레포지토리에서 작업을 시작하려던 찰나 의문의 현상이 발생했다.

이 프로젝트에 있는 모든 파일들이 changes 상태로 인식되어있던 것이다.
순간 흠칫했다. 원래 클론을 받으면 파일 전체가 changes 였던것이었나..? 내가 잘못알고 있었나..? 생각했지만, 그럴리는 없었다.

커밋하면 해결되려나..? 싶어서 git add . 후 commit 을 시도해보았는데, 다음과 같은 경고다 떴다.

LF? CRLF 가 무엇일까? 해당 경고를 자세히 알아보기로 하였다.



줄바꿈

컴퓨터에서 텍스트 파일을 저장할 때, 한 줄이 끝났다는 것을 표시하는 문자(제어 문자) 를 줄바꿈 문자라 한다. 줄바꿈을 표현하는 방식은 운영체제마다 다르게 정의되어있다고 한다. 생각해보니, 기존 레포지토리의 작업은 mac 에서 진행했고, 새로 구매한 컴퓨터는 window 이니 발생한 문제였다.


Window --> CRLF

윈도우는 줄바꿈을 두개의 문자로 표현한다.

  • \r (Carriage Return) : 커서를 맨 앞으로 이동

  • \n (Line Feed) : 다음 줄로 이동

    줄바꿈에 두개가 필요한 이유는 오래된 전통에 엮여있다. 옛날 타자기로 컴퓨터를 하던 시절에, 줄을 바꾸르면 두번 입력해야했었다고 한다. 이 개념이 현재까지 넘어와서 윈도우는 \r\n 방식을 사용하게 되었던 것이다.

첫 번째 줄\r\n
두 번째 줄\r\n
세 번째 줄\r\n

mac, linux --> LF

mac과 리눅스는 한개의 문자 (\n) 만 사용한다. 윈도우에서 사용하는 불필요한 \r 을 제거했다.

첫 번째 줄\n
두 번째 줄\n
세 번째 줄\n



Git 에서 이 문제가 발생한 이유는, windows 에서 LF 파일을 체크아웃하면 CRLF로 변환되기 때문이다. 줄바꿈 변환이 다르다면 git이 파일 변경으로 감지하고, LF인 모든 파일들을 changes로 감지하는 것이다. 참으로 억울하지 않는가? 바뀌었다고해서 이 모든 것을 다시 커밋할 수도 없는 노릇이다.

git에서의 해결 방안은 다음과 같다.

윈도우에서 LF 를 유지하려면 아래의 명령어 실행시켜주면 된다.
체크아웃할 때는 원본을 유지하면서, 커밋할 때는 LF형식으로 변환시켜주는 방법이다.

git config --global core.autocrlf input

출처 https://ehddud100677.tistory.com/388

profile
안녕하세요! 프론트엔드 개발자입니다! (2024/03 ~)

0개의 댓글

관련 채용 정보