2013-10-09 7 views
2

코드를 커밋 할 때 사람들이 의도하지 않게 eol 스타일을 변경합니다. 어떻게 자식들이 그 일을 막을 수있게할까요? 이 주제를 검색 한 결과 파일을 특정 eol 스타일로 변환하는 방법에 대한 대부분의 해답을 발견했습니다. 그러나 나는이 행동을 원하지 않는다. 커미터가 \ n 또는 \ r \ n 원본 파일의 eol 스타일을 준수하기를 원합니다. 그럴 수있어?git이 eol 스타일 변경을 거부하게하려면 어떻게해야합니까?

답변

0

커미터가 작성자가 선택한 원래 eol 스타일을 따르도록 강제하면됩니다. 즉 \ n에서 \ r \ n으로 변환하거나 \ r \ n을 \ n으로 변환하지 못하도록하는 것입니다. 하지만 원래의 eol 스타일이 무엇이든 상관하지 않습니다.

core.autocrlf set to false이있는 경우 git은 아무 것도 변환하지 않습니다.

그러나 이것은 사용자 편집기가 자식에 대해 아무 것도 모르는 경우 eol을 변경할 수 있음을 의미합니다. 자식은 체크 아웃 중에 eol을 암기하지 않습니다.
즉, 사용자가 수정 한 내용 (변경 사항 포함)을 체크인한다는 의미입니다.

post-checkout hook은 해당 정보를 기억할 것입니다.하지만 과장된 부분입니다.
.gitattributes 파일에 특정 유형의 파일에 대해 정규화를 등록하는 것이 좋습니다.이 답변의 다음 섹션에 나와 있습니다. EOL 지침으로,

당신은 .gitattributes files에서 (특정 유형의 파일에 대한) 원하는 EOL을 등록 할 수 있습니다 :


orginal 한 대답, 힘내 을 적용 할 수있는 설명에 시간을 투입

text 

이 속성은 행의 정규화를 활성화하고 제어합니다.
텍스트 파일을 정규화하면 라인 끝이 저장소의 LF로 변환됩니다.
작업 디렉토리에서 사용되는 줄 끝 스타일을 제어하려면 은 단일 파일에 eol 속성을 사용하고 모든 텍스트 파일에 대해서는 core.eol 구성 변수을 사용하십시오.

eol 

이 속성은 특정 라인 끝 스타일을 설정

는 작업 디렉토리에 사용한다.
내용 확인없이 텍스트 끝 속성을 효과적으로 설정하여 줄 끝을 정규화 할 수 있습니다. " crlf"

이 설정 힘 망할 놈의 문자열 값

세트 체크인에이 파일에 대한 행 끝을 정상화하고 파일을 체크 아웃 할 때 CRLF로 변환합니다.망할 놈의 문자열 값을 "lf"

이 설정 힘

세트 체크인에 LF에 행 끝을 정상화하고 파일을 체크 아웃 할 때 CRLF로 변환을 방지합니다. 예를 들어

:

*.sh  eol=lf 

.gitattributes 파일에 그 지시를 등록에 대한 관심은 복제 저장소에서 지속됩니다 이다.

+0

감사합니다. 그러나 나는 어떤 정규화도 원하지 않는다. 나는 커미터가 저자가 선택한 원래의 스타일을 따르도록 강요 할 필요가있다. 즉 \ n에서 \ r \ n으로 변환하거나 \ r \ n을 \ n으로 변환하지 못하도록하는 것입니다. 그러나 나는 원래 eol 스타일이 무엇인지 신경 쓰지 않는다. –

+0

@AlvinCao Git은 커미터가 처음 수정을 시작했을 때 파일에 사용 된 eol이 무엇인지 기억하지 못합니다 : 커밋시에만 스타일을 적용 할 수 있습니다. 그리고 그 스타일은 "체크 아웃시 사용 된 것"이 될 수 없습니다. 왜냐하면 Git은 결코 암기하지 않기 때문입니다 그 특별한 정보는 어디서나. – VonC

+0

@ AlvinCao 귀하의 의견을 고려하여 답변을 편집했습니다. – VonC