CRLF 개행 문제 및 해결방법

반응형

문제 상황

windows에서는 개행 문자로 CR(Carriage-Return, \r)과 LF(Line Feed, \n)을 사용 하지만,

Unix 나 Mac OS 는 LF 만 사용한다.

이로 인해 같이 작업하는 사람들 중 환경 차이가 있거나 본인이 두 환경을 번갈아 쓰는 경우에 골치아픈 문제가 발생 가능하다.

실제 코드는 변경된 게 없는데 소스의 CR/LF 때문에 변경으로 착각하는 경우도 있을 수 있고,

코드 실행시에도 (특히 docker 같은) 문제가 될 소지가 있다.

알아보기

  • git에서 개행 문자를 어떻게 처리하는지 가능한 설정

core.eof

  • native
git config --global core.eol native
# 기본 설정. 시스템에서 line ending 을 처리하는 방법에 따른다. 
# windows에서는 CRLF 를 사용하고 Linux, OS X 는 LF 만 사용
  • crlf
git config --global core.eol crlf
# CRLF 사용
  • lf
git config --global core.eol lf
# LF 사용

  • 설정확인
git config --global --list|grep core.eol

해결 방법

core.autocrlf

  • false
git config --global core.autocrlf false
# 기본 설정
# CRLF 를 썼든 LF 를 썼든 git 은 상관하지 않고 파일 그대로 checkin, checkout
# 위의 문제상황이 그대로 반복됨
  • true
git config --global core.autocrlf true
# text file을 object database 에 넣기전에 CRLF 를 LF 로 변경

윈도에서는 CRLF 를 사용하므로 저장소에서 가져올 때 LF 를 CRLF 로 변경하고 저장소로 보낼 때는 CRLF 를 LF 로 변경하도록 true 로 설정.

  • input
git config --global core.autocrlf input
# LF를 사용

리눅스, 맥, 유닉스는 LF 만 사용하므로 input 으로 설정한다.

반응형