ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Invalid expression: '/*'^M , Not an editor command: ^M
    Mac/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
Designed by Tistory.