본문 바로가기
IDE

[IntelliJ] git 에서 CRLF 개행 문자 차이로 인한 문제 해결하기

by Jammini 2024. 8. 22.
728x90

목차

  1. 개요
  2. 문제의 원인
  3. Git의 core.autocrlf 설정
  4. 추천 방안

1. 개요

잘 사용하던 IntelliJ 프로젝트 초기 커밋을 하던 중 위와 같은 노란 경고창이 떴다.

최근에 업데이트를 진행했었기에 무슨 문제인가 싶었다.

 

처음엔 안뜨던 warning이 갑자기 떠서 당황스러웠지만, 천천히 읽어보니 Git에서 라인 끝 설정과 관련된 문제를 경고하고 있었다.

 

이를 이해하고 해결한 방법에 대해 차근차근 알아보자.

2. 문제의 원인

여러 운영체제에서 작업하다 보면, 같은 프로젝트에서 다른 파일이 CRLF와 LF로 혼용되어 커밋될 수 있다.

 

이는 팀원 간에 줄 끝 문자로 인해 불필요한 변경이 발생하게 만들거나, 스크립트나 프로그램이 예상치 못한 동작을 하게 만들 수도 있다.

 

CRLF와 LF의 차이

CRLF: 윈도우에서는 줄 바꿈을 할 때, 캐리지 리턴(CR, \\r)과 라인 피드(LF, \\n) 두 개의 문자를 사용합니다. 이를 CRLF라고 부릅니다.
LF: 유닉스 및 유닉스 계열 운영체제(예: 리눅스, macOS)에서는 줄 바꿈을 할 때 라인 피드(LF, \\n) 문자만 사용합니다.

3. Git의 core.autocrlf 설정

Git에는 라인 끝 문제를 해결하기 위해 core.autocrlf 설정이 있다. 이 설정은 운영체제에 따라 라인 끝 문자를 자동으로 변환해 주는 기능이다.

  • core.autocrlf = false: Git은 라인 끝 문자를 변환하지 않는다. 각 파일은 그대로 저장되고 체크아웃된다.
  • core.autocrlf = true: 윈도우에서 주로 사용된다. 체크인할 때는 파일의 라인 끝 문자를 LF로 변환하여 저장하고, 체크아웃할 때는 CRLF로 변환한다.
  • core.autocrlf = input: 유닉스 및 macOS에서 주로 사용된다. 체크인할 때는 파일의 라인 끝 문자를 LF로 변환하여 저장하지만, 체크아웃할 때는 변환하지 않는다. 즉, 저장소에는 LF로 저장되지만, 체크아웃 시에는 원래의 형태가 유지된다.

4. 추천 방안

나는 위와 같은 메세지에 대해 Fix and Commit 을 사용하였다.

이렇게 하면 라인 끝 문제를 방지할 수 있고, 코드가 여러 운영체제에서 일관되게 동작할 수 있게 된다.

 

만약, 윈도우에서 사용한다면 core.autocrlf 를 true로 설정하는 것이 일반적이고 유닉스/리눅스/MacOS를 사용한다면 core.autocrlf 를 input으로 설정하는 것이 좋다.

반응형