2017-12-08 23 views
0

내가 작업중인 프로젝트에는 pom.xml이라는 텍스트 파일이 있습니다. 역사를 보면이 파일에는 항상 LF ...로 끝나는 모든 행이 있습니다.왜 내 자식 커밋이 모든 줄을 CRLF로 변경 했습니까?

Windows에서 실행 중이고 git bash를 설치할 때 체크 아웃시 CRLF로 자동 변환되고 커밋시 LF로 돌아갈 수있는 옵션이 있습니다. 다음과 같이 난 그냥이 문제를 확인했습니다 :

git config core.autocrlf 
true 

문제는 내 커밋 역사마다 한 줄의 변경을 나에게 알려주에서 CR 문자를 포함하고있다 커밋 가장 최근.

방금 ​​다른 텍스트 파일에 약간의 변경을가했지만 내 작업 복사본에 CRLF가 있음을 올바르게 볼 수 있지만 기록을 보면 LF로 표시됩니다. 그래서이 커밋을 위해 CRLF에서 LF로 변환되었습니다. 차이가 나는 경우이 파일은 .drl drools 규칙 파일입니다. 나는 왜 그것이 한 경우에는 작동하지만 다른 것에 대해서는 작동하지 않을 것이라고 이해합니다. 두 파일 모두 이전 버전의 LF를 일관되게 사용했습니다.

몇 가지 다른 파일을 살펴본 결과이 문제가있는 유일한 사람이 아니라는 사실을 알았습니다. 다른 .xml 파일 중 일부는 LF에서 CRLF로 전환됩니다. 이것은 역사를 엉망으로 만든다. 그래서 이것을 정리하고 싶다.

편집

나는이 pom.xml 변화를 포함 커밋, 나 또한 생성 된 두 개의 새로운 자바 클래스를 보면. 이 두 가지 모두 CRLF로 커밋되었으므로 커밋의 각 파일에 잘못된 줄 끝이 있습니다. 같은 시간에 다른 커밋을 확인하면 새로운 파일과 기존 Java 클래스 및 .drl 텍스트 파일의 혼합을 포함하여 모든 파일이 커밋에서 LF로 변환 된 것을 볼 수 있습니다.

+1

'.gitattributes' 파일을 살펴보십시오. https://git-scm.com/book/en/v2/Customizing-Git-Git-Attributes –

+0

오늘이 책을 읽었습니다. 나는 아직도 CRLF에서 LF 로의 변환이 왜 실패했는지 이해하지 못한다. –

답변

0

문제점을 발견했습니다. git bash를 설치할 때 core.autocrlf 설정이 제대로 설정되지 않았습니다. 따라서 git config core.autocrlf은 true를 반환하지만 git config --global core.autocrlf은 공란을 반환합니다.

설정이 선택되면 git bash 만 사용하면됩니다. 그러나 Eclipse 내에서 EGit을 사용하여 커밋을 만들었으므로 --global 설정이 설정되지 않았으며 false가 기본값으로 사용되었습니다. 이것이 동작이 일관성이 없었던 이유이며, bit bash를 통해 커밋되었지만 Eclipse에서는 발생하지 않았습니다.

나는 다음과 같이 전역 설정을 설정하여 고정 : 이것은했다

git config --global core.autocrlf true 

내가 사용 중 도구 행동을 저지른 내가 파일의 두 버전을 비교할 때 또한 Eclipse는 행동한다.