window 환경에서 git bash
을 쓰다보니 아래와 같은 에러 문구를 만나게 되었다.
그래서 인터넷을 뒤져보니, 이런 명령어를 치면 된다고 해서 해봤다.
git config --global core.autocrlf true
이렇게 하면 기본동작이 바뀌는데,
파일 내의 텍스트 중 new line
이 LF
인 것이 있으면, 체크아웃 시에는 LF ==> CRLF
로 바꾸고, 커밋시에는 CRLF ==> LF
로 변경한 후 commit한다.
참고로 이런 작업들은 내 컴퓨터에 저장된 기존 파일의 내용은 건들지 않는다고 한다.
참고:
사실 위 설정은 우리가 git bash를 다운로드 받고 설치할 때 이미 세팅을 하게 된다.
설치시 무지성으로 계속Next
를 누르면 못 봤을 수도 있다. 나도 그랬다.
그런데 여전히 아래처럼 문구가 나왔다.
이상했지만 곧 이유를 알았다.
나는 텍스트 파일을 만들 때 git bash
내에서 파일을 vim
editor 로 편집을 했다.
그런데 vim을 쓰면 new line
방식이 Unix 방식을 따르게 된다. 즉 LF
를 쓴 거다.
직접 테스트를 해보면 알 수 있다. git bash를 실행하고 간단하게 아래처럼 테스트해봤다.
git init # git 초기화
touch wow.txt # 텍스트 파일 생성. 이때까지는 윈도우 CRLF 를 따른다.
vim wow.txt
# 편집 내용은 아래와 같이 작성
# good day~
# isn't it?
여기까지만 하고 wow.txt
파일의 디렉토리로 가서 파일을 열어보자.
그러면 아래와 같이 LF
사용을 확인할 수 있다.
이 상태에서 git add
를 시도하면? 예상대로다.
그렇다. git은 아무 잘못이 없었다.
그저 사용자인 내가 파일 작성을 vim editor
을 사용했기 때문에 LF
를 쓴 것이다.
그렇다면 일반적으로 window 에서 텍스트 파일을 생성하고, 내용을 작성하면 어떨까?
당연히 window 운영체제에서 쓰는 CRLF
를 사용한다.
그리고 이 파일을 git add
하면? 경고문이 나오지 않고 깔끔하게 stage 된다.
그런데 window에서 vim editor를 써도 CRLF
를 유지하는 경우도 있다.
그건 뭐냐면 초기에 파일을 생성하고 나서, 맨 처음 저장할 window 편집기를 사용하면 그렇다.
파일 생성 ==> window 메모장으로 내용 작성 ==> 저장 ==> 이후 vim으로 수정 ==> CRLF 유지
이런 경고문을 보기 싫으면? 그냥 git bash 에서 제공하는 vim을 안 쓰면 그만이다!
내가 작성한 vim fileformat=dos 로 변경하는 방법을 참고한다.
참고로 방법1은 임시적인 방법이고, 방법2는 영구적인 방법이다.