git 명령어 입력시 뜨는 에러


warning: LF will be replaced by CRLF in f2.txt.

The file will have its original line endings in your working directory


맥, 리눅스를 사용하는 개발자와 윈도우를 사용하는 개발자가 Git으로 협업할 때 발생하는 에러이다.


줄바꿈 문자(CR, LF)

Mac, Linux -> LF(Line Feed) 문자만 사용

Window -> CR(Carriage Return)+LF(Line Feed) = CRLF, 문자를 둘 다 사용

==> Git이 어느 쪽을 선택할지 혼란이 오게 되어 에러가 발생하게 된다.

해결법은 자동 변환을 해주는 기능인 core.autocrlf 를 켜주면 된다.



core.autocrlf 의 기능?

  • 개발자가 git에 코드를 추가할 때 CRLF -> LF로 변환
  • git의 코드를 개발자가 조회할 때 LF -> CRLF로 변환


Window 사용자 

> git config --global core.autocrlf true

(해당 프로젝트만 적용할 때는 --global을 빼준다.)


Mac, Linux 사용자

> git config --global core.autocrlf true input


변환 기능을 사용하지 않고, 에러 메세지만 안나오게 작업할 경우

> git config --global core.safecrlf false



Git은 왜 add를 시켜야 하는걸까?
commit 하기 전에 add를 시켜주는 이유에 대해서 알아보자.

이 때 선택적으로 파일을 


$ git add f1.txt


$ git status

On branch master

Changes to be committed:

  (use "git reset HEAD <file>..." to unstage)


        modified:   f1.txt    //쉽게 말하면 commit 대기 상태


Changes not staged for commit:

  (use "git add <file>..." to update what will be committed)

  (use "git checkout -- <file>..." to discard changes in working directory)


        modified:   f2.txt


$ git commit    //commit 대기 상태에 있는 파일들만을 버전에 포함시킨다.

[master f6626ce] 4

 1 file changed, 1 insertion(+), 1 deletion(-)    //add 시킨 f1.txt만 선택적으로 commit이 된다.


  • 프로젝트시 여러 소스 코드를 수정하게 됨
  • commit 하나는 하나의 작업을 담고 있는 것이 이상적이지만, 많은 소스 코드를 수정하다 보면 commit을 놓치게 되는 상황이 생길 수 있다.
  • 그렇게 많은 작업들을 담은 거대한 버전 하나를 만들어야 할 때는 commit의 시기를 놓쳤을 때.
  • 이 때 git은 add라는 과정을 통해 commit을 할 수 있는 상태로 만들어준다.
  • commit 대기상태(stage area)에 있는 파일은 commit시 repository에 저장된다.


  • 저장소 만들기
    • Git 저장소로 사용할 디렉토리를 생성
    • git init : 현재 디렉토리를 버전관리 한다고 말해주는 명령어
    • git init 후 해당 디렉토리에 [.git]이란 디렉토리가 있는지 확인
    • [.git] --> 버전 관리시 생성된 정보들이 저장되는 디렉토리므로 삭제 되지 않게 주의.

  • git이 관리할 대상으로 파일 등록 
    • (git은 새로운 파일을 관리하지 않는다. 파일 관리를 하려면 등록을 시켜야 함.)
    • vim file.txt : vim이라는 프로그램을 이용해 file.txt라는 파일을 생성하는 명령어
      • i -> 입력모드, esc -> 입력모드시 해제, wq -> 저장과 동시에 종료
    • cat file.txt : file.txt 라는 파일 안에 있는 내용을 확인할 수 있는 명령어
    • git add file.txt : git이 add를 통해 파일을 tracking하도록 하는 명령어
      • git add 를 하는 이유: 임시적인 파일은 버전관리가 필요 없다. 그런 파일을 배제하기 위해서 관리해야 되는 파일이 무엇인지 명확하게 git에게 알려주기 위함이다.
    • git status : 프로젝트 폴더의 상태를 확인하는 명령어

  • 버전 만들기(commit)
    • 버전? 의미있는 변화, 완결된 작업상태를 뜻한다.
    • git config --global user.name "사용할 이름"
    • git config --global user.email "사용할 이메일"
    • user 이름을 준 뒤 git status 입력하면 vim이 실행이 된다.
      • 버전의 메세지(commit message) : 파일이 어떤 변화가 있는지 왜 변경되었는지 작성
    • git log : 현재 버전 확인
    • 수정된(modified) 파일도 git add 명령어로 버전관리 시스템에 다시 add를 시켜 주어야 함.


+ Recent posts