줄 끝 설정을 변경하는 방법


581

줄 끝 처리 방법에 대한 설정을 변경할 수있는 파일이나 메뉴가 있습니까?

나는 3 가지 옵션이 있다고 읽었습니다.

  1. Windows 스타일 체크 아웃, Unix 스타일 커밋

    Git은 텍스트 파일을 체크 아웃 할 때 LF를 CRLF로 변환합니다. 텍스트 파일을 커밋 할 때 CRLF는 LF로 변환됩니다. 크로스 플랫폼 프로젝트의 경우 Windows에서 권장되는 설정입니다 ( "core.autocrlf"가 "true"로 설정 됨)

  2. 그대로 체크 아웃, 유닉스 스타일 커밋

    텍스트 파일을 체크 아웃 할 때 Git은 변환을 수행하지 않습니다. 텍스트 파일을 커밋 할 때 CRLF는 LF로 변환됩니다. 크로스 플랫폼 프로젝트의 경우 이는 Unix에서 권장되는 설정입니다 ( "core.autocrlf"는 "input"으로 설정 됨).

  3. 있는 그대로 체크 아웃하고있는 그대로 커밋

    Git은 텍스트 파일을 체크 아웃하거나 커밋 할 때 변환을 수행하지 않습니다. 크로스 플랫폼 프로젝트에는이 옵션을 선택하지 않는 것이 좋습니다 ( "core.autocrlf"가 "false"로 설정 됨)



3
이 중 어느 것이 기본값입니까?
Stephen

2
기본값이 true 인 것 같습니다. 적절하다고 생각합니다.
Stephen

19
실제로 3 번째 옵션이 더 효과적이라는 것을 알았습니다. 그렇지 않으면 나는 종종 같은 플랫폼 (Windows / Linux)에서 배치 및 sh 스크립트를 편집 한 다음 커밋하고 Git이 자동으로 하나의 플랫폼에 대한 줄 끝을 "고정"하는 상황에 처해 있습니다 ... 줄 끝을 의식하고 그대로 그대로 커밋 / 체크 아웃합니다.
JustAMartin

1
@Neutrino 이것이 사실이기를 원하지만 줄 끝을 어지럽히는 IDE의 한 예 (이를 끄는 합리적인 구성 옵션을 제공하지 않음)는 Visual Studio입니다.
카시오 레난

답변:


528

이것을 제어하는 ​​일반적인 방법은 git config

예를 들어

git config --global core.autocrlf true

자세한 내용은 이 링크에서 Pro Git 링크를 아래로 "core.autocrlf"섹션으로 스크롤하십시오.


파일 이 저장된 파일 을 알고 싶다면 다음 명령을 실행하십시오.

git config --global --edit

그리고 git global config 파일이 텍스트 편집기에서 열리면 파일이로드 된 위치를 볼 수 있습니다.


17
true또는 false두 옵션은 설치 프로그램이 세 가지고 있습니다
qwertymk

49
input세 번째 옵션입니다 (제공된 링크에 명시되어 있음). 3 가지 옵션은 true| false| input
CodingWithSpike

2
이 주제에 대한 또 다른 좋은 질문은 다음과 같습니다. stackoverflow.com/questions/3206843/…
CodingWithSpike

31
실제로, 당신이 당신의 자신의 질문을 다시 읽으면, 복사 / 붙여 넣은 발췌 부분에서 : "1 ... ("core.autocrlf" is set to "true") ... 2 ... ("core.autocrlf" is set to "input") ... 3 ... ("core.autocrlf" is set to "false")"그래서 당신은 기본적으로 자신의 질문에 대답 했습니까? :)
CodingWithSpike

2
이것은 주변을 돌아 다니는 오래된 방법입니다. .gitattributes 파일을보십시오.
eftshift0

176

OS에서 사용되는 줄 끝 형식

  • Windows : CR(캐리지 리턴 \r) 및 LF(LineFeed \n) 쌍
  • OSX, Linux : LF(LineFeed \n)

우리는 두 가지 방법으로 각 OS에 대해 자동 수정 줄 끝 형식으로 git을 구성 할 수 있습니다.

  1. 힘내 글로벌 구성
  2. .gitattributes파일 사용

글로벌 구성

Linux / OSX에서
git config --global core.autocrlf input

커밋 CRLFLF때 문제가 해결 됩니다.

Windows에서
git config --global core.autocrlf true

이것은 Windows에서 체크 아웃 할 때 모든 LF것이CRLF

.gitattributes 파일

.gitattributes팀의 모든 사람이 구성을 설정하기를 원하지 않기 때문에 파일 을 보관하는 것이 좋습니다 . 이 파일은 repo의 루트 경로에 보관해야하며 존재하는 경우 git은이를 존중합니다.

* text=auto

이것은 모든 파일을 텍스트 파일로 취급하고 체크 아웃시 종료하고 LF자동으로 커밋시 OS 라인으로 변환합니다 . 명시 적으로 말하고 싶다면

* text eol=crlf
* text eol=lf

첫 번째는 체크 아웃을위한 것이고 두 번째는 커밋을위한 것입니다.

*.jpg binary

.jpg경로에 관계없이 모든 이미지를 이진 파일로 취급하십시오 . 따라서 변환이 필요하지 않습니다.

또는 경로 한정자를 추가 할 수 있습니다.

my_path/**/*.jpg binary

3
CR(캐리지 리턴) 만 사용하는 OS X는 어떻습니까?
jww

23
레거시 MacOS (즉, MacOS 9 이하)는 CR단독으로 사용되지만 OS X는 일반적으로을 사용합니다 LF.
Zachary Ware

2
Windows에서 * text eol=lf체크 아웃 하는 데 두 번 사용할 수 있습니까 LF?
mbomb007

1
gitattributes documentation setting 에 따르면 * text=autogit은 내용이 텍스트인지 아닌지를 결정할 수 있습니다. 모든 파일을 텍스트로 작성해야합니다 * text.
Adrian W

eol=crMac OS 9 및 기타 레거시 플랫폼에서 파일을 어떻게 설정 합니까?
NobleUplift 17 년

36

모든 개발자에게 재배포 할 수있는 저장소 설정 솔루션의 경우 .gitattributes 파일 에서 text 속성을 확인 하십시오. 이런 식으로 개발자는 저장소에서 직접 줄 끝을 수동으로 설정할 필요가 없으며 저장소마다 다른 줄 끝 스타일을 가질 수 있으므로 global core.autocrlf는 적어도 제 생각에는 최고는 아닙니다.

예를 들어 지정된 경로에서이 속성을 설정 해제합니다 [ . -text]는 체크인 및 체크 아웃시 git이 줄 끝을 건드리지 않도록합니다. 제 생각에 이것은 대부분의 최신 텍스트 편집기가 두 가지 유형의 줄 끝을 처리 할 수 ​​있기 때문에 이것이 최선의 행동이라고 생각합니다. 또한 개발자가 체크인 할 때 줄 끝 변환을 계속하려는 경우 특정 파일과 일치하도록 경로를 설정하거나 저장소에서 eol 속성 (.gitattributes)을 설정할 수 있습니다.

또한 .gitattributes 파일 및 텍스트 속성을 자세히 설명하는 관련 게시물을 확인하십시오. Git을 사용한 최상의 CRLF (캐리지 리턴, 줄 바꿈) 처리 전략은 무엇입니까?


. - text제공 is not a valid attribute name: .gitattributes:1하십시오cat .gitattributes
jangorecki

3

나를 위해 트릭은 무엇을 명령을 실행했다

git config auto.crlf false

프로젝트 폴더 안에 하나의 프로젝트를 위해 특별히 원했습니다.

해당 명령은 행을 추가하여 경로 {project_name} /. git / config (fyi .git는 숨겨진 폴더 임)에서 파일을 변경했습니다.

[auto]
    crlf = false

파일의 끝에서. 파일을 변경해도 같은 트릭이 있다고 가정합니다.


1

PC 형식에서 UNIX 형식으로 변경된 파일 형식을 다시 변환하려면

(1) 거북 GIT를 다시 설치하고 "라인 끝 변환"섹션에서 "있는 그대로 체크 아웃-그대로 체크인"옵션을 선택했는지 확인하십시오.

(2) 나머지 구성을 그대로 유지하십시오.

(3) 한번 설치 완료

(4) UNIX 형식으로 변환 된 모든 파일 확장자를 텍스트 파일 (extensions.txt)로 작성하십시오.

ex:*.dsp
   *.dsw

(5) 파일을 복제본에 복사 GITBASH에서 다음 명령을 실행하십시오.

while read -r a;
do
find . -type f -name "$a" -exec dos2unix {} \;
done<extension.txt
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.