-
Invalid expression: '/*'^M , Not an editor command: ^MMac/problem 2021. 9. 21. 17:47
얼마 전부터 깃허브를 사용하는데 CR LF 블라블라 하는 warning이 떴었다.
하지만 사용하는데 (commit push clone등) 아무 문제가 없었기에.. 무시했다
예전에 깃에 아주 큰 파일을 올려본 적이 (LFS) 있어서 그거 관련해서 하는 말인가 싶었다. (연관 없음)
깃허브는 나에게 끊임없이 경고하고 있었다그런데 사단이 났다.
vim 관련해서 플러그인을 설치하기 위해 깃에서 clone 한 뒤 ~/.vim 하위 디렉토리에 옮기기만 하면 되는 것이었는데
vim 을 킬 때마다 끊임없이 오류 메시지가 떴다.
문제는 ^M에 있어 보였다. 구글해보니 clone한 코드 안에 있는 '줄바꿈' 때문에 발생한 에러였다.
리눅스, 유닉스에서는 개행으로 LF(\n)를 사용하지만 윈도우에서는 CRLF(\r\n)가 사용된다고 한다.
^M이 바로 \r 에 해당한다.
git에서 clone 해온 vim 플러그인 안의 개행이 \r\n으로 되어있어 오류를 작동시켰다. mac이라면 clone해올 때 개행을 \n으로 받아왔어야 할 것이다.
개행이 별로 없다면 굳이 굳이 ^M(\r)을 하나씩 delete해줄 수도 있었지만, 내용에선 보이지않는다. vi -b 파일명.txt (바이너리 모드)로 하면 보인다고 한다.
찾아보면 ^M을 제거해주는 방법도 존재하나
나는 그냥 내 git 설정을 바꿔주고 다시 다운받는 방법을 택했다. 앞으로도 개행은 무조건 LF로 받기 위해서 !!!
깃 core.autucrlf가 어떤 걸로 설정되어있느냐에 따라 입력하고 출력하는데 CRLF 설정이 달라진다.
1. git config --global core.autocrlf true
: 앞으로 커밋할 때 자동으로 CRLF를 LF로 변환해주고 반대로 Checkout 할 때 LF를 CRLF로 변환해주는 명령어.
윈도우 유저들에게 필요한 설정
2. git config --global core.autocrlf input
: 앞으로 커밋할 때만 CRLF를 LF로 변환한다. clone할 때는 그대로 받아온다.
3. $ git config --global core.autocrlf false
: 있는 그대로 둔다.
나는 mac을 사용하고 있으나 위 설정이 true로 설정되어 있어 줄바꿈을 CRLF로 굳이 변환 시켜 받고 있었다..
앞으로 CRFL와 절대 만나고 싶지 않아서 일단 input으로 변경했다.
2번 명령을 쳤는데
"
warning: core.autocrlf은(는) 여러 개 값이 있습니다
error: 여러 개의 값을 하나의 값으로 덮어쓸 수 없습니다.
core.autocrlf을(를) 변경하려면 정규식을 쓰거나, --add 또는 --replace-all 옵션을
사용하십시오.
"
라고 나와서 현재 core.autocrlf에 뭐라고 쓰여져 있나 확인했다.
$ git config --get core.autocrlf
true 라고만 적혀있었기에
$ git config --global core.autocrlf input --replace-all
를 쳐서 깔끔하게 input으로 고쳐주었고, 매우 잘 해결되었다.
* 참고 블로그
https://git-scm.com/book/ko/v2/Git%EB%A7%9E%EC%B6%A4-Git-%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0
'Mac > problem' 카테고리의 다른 글
Error: Unknown command: cask (0) 2022.01.05