git bash의 경고를 무시한 채 업로드 했다가 리소스 파일들이 전부다 test쪽으로 rename 되었다. 그래서 스프링에서 보이지않고 클래스가 사라지고 소스파일로 옮겨가는 에러가 발생하였다.
Git에서 "LF will be replaced by CRLF" 경고는 Windows에서 개행 문자(줄 바꿈 문자)를 나타내는 CRLF
가 Git에서는 LF
로 변경될 것임을 나타냅니다. 이는 주로 Windows와 Unix 기반 시스템 간에 발생하는 줄 바꿈 문자의 차이로 인해 발생합니다.
파일이 삭제된 것처럼 보이는 이유는 Git이 경고 메시지를 통해 파일의 내용이 변경될 것임을 알려주었기 때문입니다. 이것은 파일의 줄 바꿈 문자가 변경되었기 때문에 발생하는 것입니다. 실제로 파일이 삭제된 것이 아니라 변경된 것입니다.
이러한 변경을 방지하려면 Git이 자동으로 줄 바꿈 문자를 변경하지 않도록 설정할 수 있습니다. 이를 위해서는 .gitattributes
파일을 프로젝트 루트 디렉토리에 추가하고 다음과 같은 설정을 추가합니다:
* text=auto eol=lf
이 설정은 모든 파일에 대해 자동으로 줄 바꿈 문자를 LF
로 설정하도록 합니다.
만약 이미 변경된 파일을 되돌리고 싶다면, 다음 명령어를 사용하여 작업 디렉토리를 최신 커밋과 동일하게 만들 수 있습니다:
git checkout -- .
이 명령어는 모든 파일을 최신 커밋의 상태로 되돌립니다. 주의해야 할 점은 이 명령어를 사용하면 현재 작업 중인 변경 사항이 모두 삭제되기 때문에 주의해서 사용해야 합니다.
또한, 파일이름이 변경되었을 경우 해당 파일이 새로운 경로에 저장될 수 있으므로 프로젝트를 잘 살펴보고 필요한 파일이 모두 존재하는지 확인해야 합니다.
다행이 다같이 하는 프로젝트여서 git clone으로 복구를 완료하였다. git을 잘 사용하자 !
특정 폴더로 복제
git clone <repo> <directory>
<repo>에
있는 리포지토리를 로컬 컴퓨터의 ~<directory>!
폴더로 복제합니다.
특정 태그 복제
git clone --branch <tag> <repo>
<repo>
에 있는 리포지토리를 복제하고, <tag>
의 ref만 복제합니다.
부분 복제
git clone -depth=1 <repo>
<repo>
에 있는 리포지토리를 복제하고 옵션 깊이=1로 지정된 커밋 기록만 복제합니다. 이 예제에서는 <repo>
의 복제본을 만들고, 최근 커밋만 새로 복제된 리포지토리에 포함됩니다. 부분 복제는 광범위한 커밋 기록이 있는 리포지토리로 작업할 때 가장 유용합니다. 광범위한 커밋 기록으로 인해 디스크 공간 사용량 제한 및 복제 시 긴 대기 시간과 같은 확장 문제가 발생할 수 있습니다. 부분 복제는 확장 문제를 완화하는 데 도움이 될 수 있습니다.
Git 설정을 변경하여 기본적으로 LF를 사용하도록 설정할 수 있습니다.
git config --global core.autocrlf input
위 명령은 Git이 저장소에 파일을 추가할 때만 CRLF를 LF로 변환하도록 설정합니다.
이러한 변경 사항을 적용하면 Git이 이제부터 저장소 내에서 일관된 개행 문자 스타일을 사용하게 됩니다. 선택한 방법에 따라 .gitattributes
파일을 추가하거나 Git 설정을 변경하면 해결된다.