2017-05-17 12 views
2

그래서이 공동 작업 프로젝트를 시작하려고하는이 새로운 저장소가 있습니다. 이미 .gitignore.gitattributes (auto-crlf 처리 중) 파일을 푸시했습니다.힘내 : 자체 제작 된 파일의 줄 끝 문제가 있습니다.

.gitattributes 파일은 다음과 같습니다

# Set the default behavior, in case people don't have core.autocrlf set. 
* text=auto 

# Explicitly declare text files you want to always be normalized and converted 
# to native line endings on checkout. 
*.c text 
*.h text 

# Declare files that will always have CRLF line endings on checkout. 
*.sln text eol=crlf 

# Denote all files that are truly binary and should not be modified. 
*.png binary 
*.jpg binary 
*.mdj binary 

내가 GitHub의에 저장소를 생성 SourceTree를 통해 내 PC에 복제. ,

The following problems have occurred when adding the files: 
fatal: LF would be replaced by CRLF in tpCuat/CMakeLists.txt 
during executing git "C:\Program Files\Git\cmd\git.exe" -c core.quotedpath=false add --ignore-errors -- tpCuat/CMakeLists.txt 

것은이 : 이제, 내가 그 안에 새로운 CLion 프로젝트를 만들려고 해요,하지만 난 하려고 할 때이CMakemain.c 파일이 커밋에 추가, 나는 CRLF 오류에 LF를 얻을 수 이 파일들은 Windows (실제로는 CLion)에서 만들어 지므로이 오류가 왜 발생하는지 알 수 없습니다.

+1

'.gitattributes '는 실제로 어떻게 생겼습니까? 'core.autocrlf' 설정이 있습니까? 'core.safecrlf' 설정이 있습니까? –

+0

기본값은 Git의 버전 (및 빌드)에 따라 다릅니다. – Arafangion

+0

@EdwardThomson [여기] (http://imgur.com/a/lGfQR)은 내 .gitattributes입니다. –

답변

2

이 경고 (또는 오류)는 파일에 줄 바꿈이 있고 (\n, ASCII 10), Git에게 CRLF 변환을 수행해야한다고 알리는 구성을가집니다. 이 경우, 그건 당신의 .gitattributes : 힘내는는 당신에게 당신이에 을 가하고있는 파일이 파일을 할 것이라는 보증을 제공 할 수 당신을 말하고 있기 때문에이 문제가

* text=auto 

당신 나중에 입니다.

당신이 당신의 저장소 (git add)에이 파일을 추가

text=auto 속성은 베어 라인 피드 (\n, ASCII 10)를에 파일 (ASCII 10 다음 \r\n, ASCII 13) 모든 CRLF로 변환 힘내을 알려줍니다 그것을 저장소에 저장합니다. 강제로 Git이 파일을 디스크에 넣으려고하면 (git checkout) 파일에있는 모든 라인 피드 (\n)를 CRLF (\r\n)로 변환합니다.

파일에 맨손 줄 바꿈을 넣었으나 Git에게 CRLF 변환을 지시하면이를 왕복 할 수 없습니다. 당신은 어떤 파일이있는 경우 고려 (행 끝은 그림) :

line one\r\n 
line two\r\n 
line three accidentally ends with a newline!\n 
line four\r\n 

이제 망할 놈의 저장소에이를 추가 할 때, 그것은 CRLF 변환 및 저장 할 것입니다 :

line one\n 
line two\n 
line three accidentally ends with a newline!\n 
line four\n 

그리고 그것을 그것을 확인하기 위해 갈 때 밖으로 다시 :

line one\r\n 
line two\r\n 
line three accidentally ends with a newline!\r\n 
line four\r\n 

공지 사항 라인 세 지금은 CRLF (\r\n)는 원본 파일에하지 않았다로 끝나는 어떻게? 그게입니다. Git이 당신에게 경고하고있는 것입니다. 아마도 정확하게 당신이 퍼팅하고 무엇을 돌려 줄 수 없다고 말하고있다.

을이 당신을 위해 문제가 있다면, 당신은 core.safecrlf 켜 그래서 그 망할 놈의 것 오류 이런 일이 발생하고 요구해야 당신은 줄 끝 문제를 고쳐야합니다. 그렇지 않으면주의하지 않으면이 경고를 무시해도됩니다.

왜 CLion은 파일에 맨손 줄 바꿈을 넣는 것처럼 어리석은 짓을하고 있습니까? 글쎄, 그것은 또 다른 질문이다.