Git에서 CRLF 개행 문자 차이 해결법
Windows
에서는Line Breaking
으로CR(Carriage-Return, \r)
과LF(Line Feed, \n)
을 사용하고Unix
나Mac OS
에서는LF
만 사용한다.
이로 인해서 실제 코드는 변경된게 없는데 소스의CR/LF
때문에 변경으로 인식하여Commit
을 하게되는 문제가 발생된다. 이런 문제를 해결하기 위해서 OS가 달라도 문제가 없도록CRLF
에 대한 설정을 해줘야 한다.
core.eol
git에서
Line Breaking
을 어떻게 처리할지에 대한 항목
- native
- 기본설정. 시스템에서
Line Breaking
을 처리하는 방법에 따른다.Windows
에서는CRLF
를 사용하고Linux
,OS X
는LF
만 사용
- 기본설정. 시스템에서
- crlf
CRLF
를Line Breaking
으로 사용
- lf
LF
를Line Breaking
으로 사용
설정방법
1
2
3
4
5
## 설정
git config --global core.eol native
## 설정 확인
git config --global --list | grep core.eol
core.autocrlf
git
은 저장소 메타 데이타 디렉터리인.git
폴더에 모든 이력 데이타를 갖고 있다. 이력 데이타는key/value
형식의 데이타베이스이며core.autocrlf
는text file
을git object database
에checkin
,checkout
할때 어떻게 처리할지를 설정하는 변수
- false
- 기본 설정. 파일에
CRLF
를 썼든LF
를 썼든 git은 상관하지 않고 파일 그래도checkin
,checkout
한다. 이 설정은Line Breaking
이 다른 OS에서는text file
이 변경되었다고 나오므로 위에서 언급한 여러 가지 문제가 발생할 수 있다.
- 기본 설정. 파일에
- true
text file
을object database
에 넣기전에 CRLF를 LF로 변경
- input
LF
를Line Breaking
으로 사용
해결방법1 – autocrlf
설정 사용
OS별 CRLF 차이로 인한 문제를 막기 위해 OS별로 다음과 같이 설정을 한다.
Windows
Windows
에서는CRLF
를 사용하므로 저장소에서 가져올 때 LF를 CRLF로 변경하고 저장소로 보낼 때는CRLF
를LF
로 변경하도록true
로 설정
1
git config --global core.autocrlf true
LINUX, MAC OS
리눅스, 맥, 유닉스는
LF
만 사용하므로input
으로 설정
1
git config --global core.autocrlf input
해결방법2 – .gitattributes
사용
git
은 텍스트 파일의 속성을.gitattributes
파일을 통해 설정할 수 있으며 여기에는CRLF
처리도 지정할 수 있다..gitattributes
를 저장소에 커밋하면 다른 클라이언트는 별도의 설정이 필요없다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# Auto detect text files and perform LF normalization
* text=auto
*.cs text diff=csharp
*.java text diff=java
*.html text diff=html
*.css text
*.js text
*.sql text
*.csproj text merge=union
*.sln text merge=union eol=crlf
*.docx diff=astextplain
*.DOCX diff=astextplain
# absolute paths are ok, as are globs
/**/postinst* text eol-lf
# paths that don't start with / are treated relative to the .gitattributes folder
relative/path/*.txt text eol-lf
** 만약 git client
로 egit
을 사용하면 .gitattributes
를 읽지 못해 제대로 동작을 안 하므로 방법1의 autocrlf
를 사용하는 것이 좋다.*
참고주소
- https://www.lesstif.com/pages/viewpage.action?pageId=20776404