-
[TIL] (230614) Git에 add를 진행하는데 LF, CRLF 에 관련된 경고 메세지가 떴다.TIL 2023. 6. 14. 23:32728x90
오늘은 객체의 클래스 설계, 필드와 메서드, 생성자, 추상클래스에 대해 배웠다.
코드를 구상할 때 어떤 부분을 추상화로 진행할지, 어떤 부분을 오버라이딩을 할지 나누는 기준에 대해 생각해 보는 시간이었다.
IntelliJ로 코드를 연습한 후 Git Bash를 이용하여 github에 올리려고
git add .을 했는데 생전 처음 보는 메시지가 나와서 당황스러웠다. 이게 뭘까?
🔸문제 발생
경고메세지
:warning: in the working copy of '.gitignore', LF will be replaced by CRLF the next time Git touches it
(경고: '.gitignore'의 작업 복사본에서 LF는 Git이 다음번에 터치할 때 CRLF로 대체됩니다)
경고메시지를 확인해 보니 LF가 CRLF로 대체된다는데 LF와 CRLF가 뭔지 모르겠다.
특히 평소와 동일하게 commit을 진행했기 때문에 갑자기 이런 메시지가 떠서 당황했다.
🔸시도해 본 것
일단 에러메시지가 아닌 경고 메시지라고 생각돼서 무시하고 add를 해봤더니 적용이 잘 됐다.
확인용으로 commit까지 진행했는데 커밋 역시 잘 되었다.
하지만 평소에는 아무 메시지도 뜨지 않았기에 경고 메시지부터 살펴봤다.
<해석>
경고메시지
:warning: in the working copy of '. gitignore', LF will be replaced by CRLF the next time Git touches it
ㄴ> .gitignore 파일에서 줄 끝 표시 방식이 변경될 수 있다는 것을 나타내며, Git이 파일을 다룰 때 LF(Line Feed)를 CRLF(Carriage Return + Line Feed)로 바꿀 가능성이 있다는 의미다.
Line Feed (LF): 커서를 다음 줄로 이동시킵니다.
Carriage Return (CR): 커서를 현재 줄의 맨 앞으로 이동시킵니다.경고메시지는 줄 바꿈에 대한 내용이었다.
보통 Unix 계열 시스템(Linux, macOS 등)에서는 줄 끝 표시로 LF를 사용하고, Windows에서는 CRLF를 사용한다.
Git은 기본적으로 Unix 스타일의 줄 끝 표시인 LF를 선호하지만 Windows 환경에서 작업할 때 Git은 CRLF를 사용하는 것을 허용하며, 지금 상황에서는 형상관리를 해주는 Git이 둘 중 어느 쪽을 선택해야 되는지 몰라서 경고 메시지를 띄워준 거라고 한다.
그래서 형식을 자동으로 변환하는 명령어를 입력했다.
상황은 해결했으나 이전에는 이런 메시지가 안 떴기 때문에 뭐가 달라진 건지 한참 고민해 보다가 경고메시지를 다시 보고 답을 발견했다.
문제는 내가 추가한 .gitignore의 코드였다!
아까 파일구조를 본다고. gitignore의 내용을 살펴보다가 기존에 등록되어 있던 코드 일부를 잘못 건드려서 발생한 것 같다.
100% 확실하진 않으나 경고 메시지가 뜬 이후로 실험용 더미파일을 github에 올렸을 땐 정상적으로 업로드되었으니 이 이유가 가장 가능성이 높다고 생각한다.
🔸해결
Git이 둘 중 어떤 것을 선택할지 모른다면 직접 지정하면 된다!
autocrlf : check-in, check-out할 때 파일을 어떻게 처리할지 설정하는 변수이다.
<해결코드>
$ git config --global core.autocrlf true
* 이 설정은 주로 Windows에서 Git을 사용할 때 유용하게 적용됨
* --global : 시스템 전체 적용
🔸알게 된 점
.gitignore을 Windows 환경에서 작성하고 Linux 또는 macOS 환경에서 사용하면 이런 오류가 발생할 수 있다고 한다.
Git 설정에서 --global옵션은 전역적으로 적용하는 옵션이다. 현재 사용자의 모든 Git저장소에서 동일하게 설정되기 때문에 이 옵션을 사용할 경우 주의해야 한다.
비록 경고성 메시지이지만 문제를 야기할 수 있는 가능성이 있다면 차단하는 게 좋다고 생각한다.
그래서 중요한 프로젝트나, 인원이 많이 투입되는 큰 프로젝트를 진행할 때 LF, CRLF 중 어떤 것으로 진행할지 미리 정한 후 설정하거나, 개발환경을 맞추는 게 좋을 것 같다는 생각이 들었다.
728x90'TIL' 카테고리의 다른 글