git 에서 line break (crlf, lf) 관리하기

HYEONG HWAN, MUN/ 5월 16, 2019/ 미분류/ 0 comments

https://blog.lael.be/post/8826

텍스트 파일을 다룰 때 정해야 할 사항이 두가지가 있다.

하나는 언어셋(charset)이고, 다른 하나는 줄바꿈(line-break)이다.

다행하게도, 요즘의 대부분의 사람은, 파일 언어셋utf-8 으로 사용한다.

 

그렇다면 우리는 줄바꿈(line break) 만 관리하면 한다.


줄바꿈 (line break, line ending, line feed) 문자.

줄바꿈 문자는 Windows 와 Linux(Mac) 의 처리가 다르다.

Windows 는 CR(캐리지 리턴) + LF(라인피드)를 새 줄로 간주한다.
Linux 는 LF(라인피드)를 새 줄로 간주한다.

 

이것은 과거 컴퓨터 시스템에서 사용하던 타자기(type writer) 때문에 발생하는 것이다.

캐리지리턴(carrige return) : 캐리지(타자기의 커서)를 원래위치로 되돌리는 작업
라인피드(line feed) : 종이를 감아서 줄을 넘김

CRLF : 캐리지를 되돌리면서 줄을 넘김.


요즘의 처리 방식.

요즘은 디지털의 시대라서, typewriter 처럼 캐리지를 처음으로 옮기는 작업이 필요 없다.
즉, 캐리지리턴이 필요 없다! (CR을 무시하는 추세임.) (여러분이 여러 많은 언어에서 줄바꿈 코딩을 할 때에는 \r\n 하지말고 \n 만 입력하세요.)


 

요즘 시대의 대부분의 에디터는 문서의 라인피드를 자동으로 탐지하고, 자동으로 작성한다.

즉, 동일한 에디터에서, Windows 에서 작성한 문서라고 판단할 경우 CRLF 로 줄바꿈 문자를 입력하고,
Linux 나 Mac 에서 작성한 문서라고 판단할 경우 LF 로 줄바꿈 문자를 입력한다.

 

또한 요즘의 대부분의 에디터는 줄바꿈(Line Ending)이 섞여 있을 경우 Mixed Line Ending 경고를 보여주고, 자동 변환 옵션을 표시해 주곤 한다.

 


우리는 알게모르게, autocrlf (lf 모드와 crlf 모드를 자동으로 감지함) 를 사용하고 있다.

 

이 autocrlf 를 끄는 방법에 대해서 알아보도록 하자.

 

git 환경에서 autocrlf 끄기.

 

내 PC 에서 변경하는 방법

해당 git 폴터로 SHELL 이동한 후에 다음의 명령어를 실행한다.

# git config core.autocrlf false

해당 명령어는 .git/config 파일에 한 줄을 추가하는 것이다. 위의 autocrlf 설정을 취소하려면 config 파일을 열어서 해당 줄을 삭제하면 된다.

 

프로젝트 설정에서 변경하는 방법

.gitattributes 파일을 만들고 다음의 내용을 저장한다.

* text=auto eol=crlf

또는

* text=auto eol=lf

설정파일 정의 참고 : https://github.com/git/git/blob/master/Documentation/RelNotes/2.10.0.txt#L248

 

 


이 autocrlf 를 false 로 설정하는 것은, 개인적으로는 매우 권장하지 않는다. 피치 못할 사정이 있을 때에만 설정하도록 하자.

End of Line 값을 동일시할 경우, byte 수가 동일하게 된다.

 

Leave a Comment

작성하신 댓글은 관리자의 수동 승인 후 게시됩니다.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>
*
*