Windows/유용한 풀그림

[git] CRLF 변환 설정

채윤아빠 2022. 5. 16. 08:23
728x90
반응형

개요

git 저장소에 소스를 커밋할 때, 윈도우 개발환경에서 개발한 쉘 스크립트 소스에 CRLF가 붙어서 리눅스 환경에서 오류가 발생하는 경우가 종종 있습니다.

git 저장소에 커밋할 때, CRLF 문자셋을 변환하는 설정에 대하여 알아 보겠습니다.


"core.autocrlf" 설정

git의 "core.autocrlf" 설정을 통하여 CRLF를 저장소에 저장할 때, 어떻게 저장할지 선택할 수 있습니다.

Linux 환경에서 개발하는 경우라면 특별한 의미가 없다고 봐도 무방합니다만, 윈도우 환경에서는 다음과 같은 의미를 갖습니다.

  • input
    • 윈도우 환경에서 CFLF를 사용하더라도, 저장소에 커밋할 때는 LF로 변환하여 입력됩니다.
    • 저장소에 이미 CFLF로 저장되어 있는 것이라고 가져올 때 자동으로 LF로 변환하여 가져옵니다.
  • true
    • CFLF로 저장된 파일을 저장소로 보낼 때는 자동으로 LF로 변환합니다.
    • 반대로 윈도우로 가져올 때는 자동으로 CFLF로 변환됩니다.
  • false
    • CRLF 변환 기능을 비활성화하는 것으로 생각하시면 됩니다.
    • 파일에 있는 설정 그대로 저장소에 저장이 됩니다. 윈도우 환경이라면 CFLF가, Linux나 Mac이라면 LF가 그대로 저장소에 저장됩니다.
    • 반대로 저장소에서 가져올 때도, 저장소에 저장되어 있는 문자셋 그대로 가져오게 됩니다.

전역으로 "core.autocrlf"를 설정할 경우에는 다음과 같이 할 수 있습니다.

$ git config --global core.autocrlf false

설정한 값을 확인할 때는 마지막 설정값만 제외하면 됩니다.

$ git config --global core.autocrlf
false

특정 저장소에만 적용할 경우에는 해당 저장소에서 다음과 같이 "--global"을 제외하고 설정하면 됩니다.

$ git config core.autocrlf false

.gitattributes 파일

특정 파일이나 디렉토리에 대해 CRLF 처리를 제어하려면 .gitattributes 파일을 사용할 수 있습니다.

# 모든 텍스트 파일에 대해 CRLF를 LF로 변환
* text=auto

# 특정 확장자 파일에 대해 CRLF 유지
*.bat text eol=crlf

참고자료