줄의 끝을 나타내는 문자로 개행을 하는 문자, 줄바꿈을 해주는 문자 등 여러 방식으로 정의 할 수 있다. 개행 문자, 줄바꿈문자(line break), EOL(end of line), newline 등 표현 방식도 많다.
현재 라인 피드(line feed, LF, '\n', 0x0A), 캐리지 리턴(carriage return, CR, '\r', 0x0D)가 많이 사용된다.
새줄 문자 | 사용 OS |
---|---|
LF | 유닉스, 맥 OS, 리눅스 등 |
CRLF | 윈도우 등 |
CR | 9버전 이하 맥 OS |
프로그래밍할 때 이전에 코드를 작업한 환경이 지금 환경과 다를 경우 문제가 발생할 수 있다고 한다. 예를 들면 리눅스에서 작업을 하다가 윈도우에서 작업을 하는 경우 코드에 새줄 문자가 LF에서 CR+LF로 변경되면서 실제 코드는 변경된 게 없지만 의미 없는 커밋이 이루어질 수 있다. 이는 git log를 확인할 때 오해가 발생할 수 있다.
IntelliJ에서 새줄 문자를 설정하는 방법은 두가지가 있다.
IDEA 설정에서 설정하는 방법
IDEA 우측 하단에서 설정하는 방법
IDEA 우측 하단에서 간단하게 설정할 수도 있다. 이곳에서 인코딩 방식과 Tab/space도 설정할 수 있다.
git에서 새줄 문자 처리 방법을 설정하는 명령어
core.eol = native
: 시스템 기본 새줄 문자를 적용한다. 윈도우는 CRLF, 리눅스와 맥은 LF를 사용한다.core.eol = crlf
: CRLF를 사용한다.core.eol = lf
: LF를 사용한다.## 설정 법
$ git config --global core.eol native
global 로 설정하지 않으면 해당 레포지토리만 적용이 된다. 대신 다른 레포지토리에서는 적용이 안되므로 잘 써야한다.
git이 checkin, checkout 할 때 새줄 문자 처리 방법을 설정하는 명령어이다. 설정에 따라 git에서 알아서 바꿔준다.
core.autocrlf = false
: 파일이 CRLF, LF 무엇을 쓰는지 상관없이 그대로 checkin, checkout한다.core.autocrlf = true
: checkin 할 때 CRLF이 LF가 되고, checkout 할 때 LF가 CRLF로 변경된다.core.autocrlf = input
: checkin시 CRLF를 LF가 되고, checkout할 때는 변경 없이 그대로 받아온다.## 설정 법
$ git config --global core.autocrlf true
## core.eol 설정 확인
$ git config --global --list|grep core.eol
## core.autocrlf 설정 확인
$ git config --global --list|grep core.autocrlf
## 모든 config 확인
$ git config --list
git config --list 명령을 하면 참 많은 옵션이 출력된다. 여기서 core.eol옵션과 core.autocrlf를 global로도 설정하고 로컬로도 설정하면 같은 옵션이 여러 개가 있기도 하다.
이렇게 같은 옵션이 여러 개인 이유는 git config 명령어를 입력하면 .git/config와 /etc/gitconfig등 local config와 global config가 모두 보여지기 때문이다. 우선순위는 local config인 더 뒤에 있는 옵션이 적용된다.
리눅스에서 cat -e
명령어를 이용하여 새줄 문자를 직접 확인할 수 있다. 각 라인의 맨 뒤 문자에 붙는 마크로 확인이 가능하다.
새줄 문자 | 특수 문자 |
---|---|
LF | $ |
CR | ^M |
CRLF | ^M$ |
이런 식으로 맨 뒤에 $만 붙어있는 것은 현재 LF로 저장되어 있다는 의미이다.
https://ko.wikipedia.org/wiki/새줄_문자