Computer Engineering/github

[github] CRLF 설정 / 커밋 이후 gitignore 설정하기

soohey 2022. 12. 13. 23:05

오류상황

 

warning: LF will be replaced by CRLF in src/Main.java. The file will have its original line endings in your working directory

 

윈도우 환경에서 일어날 수 있는 오류라고 한다.

원인

확인해보니 맥 환경과 윈도우 환경이 다른데 협업할 경우 Whitespace가 달라 생길 수 있는 에러라고 한다. 

Whitespace는 스페이스와 탭, 줄바꿈, 자동줄바꿈 처리 설정을 의미한다.

 

유닉스 환경에서는 한 줄의 끝이 LF(Line Feed)로 이루이지는데 

윈도우 환경에서는 CR(Carriage Return)과 LF(Line Feed) -> CRLF로 이루어지기 때문에 git에서 어떤 쪽을 선택할지 혼란이 온것이라고..

 

결론은 core.autocrlf를 true로 설정해주면 git 에서 자동으로 설정해준다고 한다.

해결

git config --global core.autocrlf true로 설정해주었다.

이후 git commit을 해보니 잘된다.

 

그런데 commit하기 전에 gitignore 파일을 넣지 않았다는 것을 깨닫고 다시 추가해준뒤 commit해주었다.

커밋이 이미 완료된 다음에 생성한 gitignore 파일을 적용하고 싶다면

git rm -rf --cached . 를 사용하면 된다. 해당 명령어는 원격 저장소에 있는 파일을 삭제한다. 하지만 로컬 저장소에 있는 파일은 삭제하지 않는다. 

커밋을 확인해보니 잘못올린 out 폴더 파일들이 모두 삭제된 것을 볼 수 있다. 물론 로컬 환경에는 파일이 그대로 살아있다!