git에 .gitignore 파일을 작성한 후 git add 를 해주니 다음과 같은 에러 메세지가 발생하였다.
warning: LF will be replaced by CRLF in .gitignore.
1. LF(Line-Feed)란?
- Mac, Linux 등 Unix 계열의 줄바꿈 문자열(\n) 이다.
- 커서 위치는 그대로 두고 종이의 한 라인 밑으로 내려가는 동작 (=현재 위치에서 바로 아래로 이동)
2. CR(Carraige-Return)
- Mac 초기 모델 줄바꿈 문자열(\r)
- 커서 위치를 맨앞으로 옮기는 동작
3. CRLF(Carriage-Return + Line-Feed)
- Windows, DOS 줄바꿈 문자열 (\r\n)
- CR과 LF의 동작을 합친 것
- 커서를 다음 라인 맨앞으로 옮기는 동작
따라서, 위 오류는 OS마다 줄바꿈 문자열이 다르기 때문에, Git이 어떤 쪽을 선택해야할 지 몰라 경고 메세지를 띄워준 것이라 한다.
해결방안
따라서 해결 방안은 autocrlf 를 켜주는 것. core.autocrlf 기능을 켜주면 git이 자동변환 해준다.
사용자가 git에 코드를 추가할때 CRLF -> LF로 변경해주고, git의 코드를 개발자가 조회하면(ex. clone 등) LF -> CRLF로 변환해준다.
시스템 전체에 적용하려면 --global 을 추가하고, 전체가 아닌 해당 프로젝트에만 적용하고 싶다면 제거해주면 된다.
기본 설정인 core.autocrlf = false 는 OS에 상관없이 줄바꿈에 대한 문자열 그대로 인식해 저장해 문제가 발생할 가능성이 존재한다. 따라서 autocrlf = ture로 변환해 기능을 켜준다.
1. Windows
git config --global core.autocrlf true
2. Linux, Mac
git congit --global core.autocrlf input
3. 기능을 변환하지 않고, 에러 메세지를 무시하고 작업하고 싶은 경우
- 경고 메세지 기능인 core.safecrlf 를 꺼주면 된다.
git config --global core.safecrlf false