source

Windows에서 Git에 CR+LF 대신 LF를 사용하도록 강제하는 방법은 무엇입니까?

ittop 2023. 4. 22. 10:30
반응형

Windows에서 Git에 CR+LF 대신 LF를 사용하도록 강제하는 방법은 무엇입니까?

하여 Git이 할 수 하고 .LFCR+LF.
두 가지 구성 옵션을 확인했지만 올바른 설정 조합을 찾을 수 없었습니다.

하여 「」로 하고 .LF ""를 유지합니다.LF파일 안에 있습니다.

: ★★★★★★★★★★★★★★★★★★★★★★★autocrlf = input이치노
요.LF.

잘 에서 이미 입니다.저장소에서 이미LF하지만 Git for Windows로 체크아웃된 파일은CR+LF에 Git을 .LF: UNIX 행의 엔딩을 강제합니다.

$ git config --list | grep crlf
core.autocrlf=input

로 LF 하려면 , 의 LF 엔딩을 설정합니다.core.autocrlf로로 합니다.false:

git config --global core.autocrlf false

를 하고 있는 는, msysgit 는 msysgit 로 되어 있기 에, 가 있습니다. msysgit (메시지)true시스템 설정으로 합니다.

이제 git은 정규화를 종료하는 어떤 행도 수행하지 않습니다.체크인 하는 파일을 정규화하려면 , 다음의 순서에 따릅니다. ★★text=auto 안에서.gitattributes'이것'은 다음과 같습니다.

* text=auto

★★★★★★★★★★★★★★★★★★」core.eol로로 합니다.lf:

git config --global core.eol lf

이제 를 실행하여 단일 저장소를 (작업 디렉토리의!) crlf로 전환할 수도 있습니다.

git config core.eol crlf

설정이 완료되면 git에서 repo 내의 모든 파일을 정규화할 수 있습니다.이를 수행하려면 repo 루트로 이동하여 다음 명령을 수행합니다.

git rm --cached -rf .
git diff --cached --name-only -z | xargs -n 50 -0 git add -f

작업 디렉토리내의 파일도 git로 정규화하려면 , 다음의 커맨드를 실행합니다.

git ls-files -z | xargs -0 rm
git checkout .

나는 이 질문에 꽤 자주 답하지만, 다른 대답들은 모두 나에게 맞지 않는다.
그렇긴 하지만, 나에게 맞는 답은 다른 것들과 뒤섞여 있다.

내가 찾은 것은 다음과 같다.

git config --global core.eol lf
git config --global core.autocrlf input

된 후 의 경우, repo에 됩니다(기트 저장소).LF )\n를 참조해 주세요.
의 ★★★★CRLF로 변환됩니다.LF★★★★★★★★★★★★★★★★★★★★

이미 체크아웃한 기존 repo(repo의 행 끝은 올바르고 작업 복사본은 아님)의 경우 다음 명령을 실행하여 수정할 수 있습니다.

git rm -rf --cached .
git reset --hard HEAD

「 「 」 )이 삭제됩니다.rm-r가 표시되지 않음。-f한 모든 )--cached 「」( )로부터를 참조해 주세요..reset그런 다음 모든 파일을 실제 행이 끝난 상태로 되돌립니다(repo의 내용을 참조).

리포에서 파일의 행 끝을 수정해야 한다면 IntelliJ나 Sublime Text와 같이 일괄적으로 할 수 있는 에디터를 선택하는 것을 추천합니다만, 좋은 에디터가 이것을 서포트할 것입니다.

OP는 그의 질문에 다음과 같이 덧붙였다.

은 msysgit을 사용하고 .CR+LF을 msysgit으로 강제로 .LF

입니다..gitattributes 삭제:

# 2010
*.txt -crlf

# 2020
*.txt text eol=lf 

(종료 전환에 관한 손자코멘트에 기재된 바와 같이)CRLF eol.

그리고 나는 항상 추천해왔다. git config --global core.autocrlf false모든 변환을 비활성화합니다(모든 버전 파일에 적용됩니다).

크로스 플랫폼 git 구성에 대한 베스트 프랙티스를 참조하십시오.

Git 2.16(2018년 1분기)부터git add --renormalize . 것을 응용하다.gitattributes즉시 설정을 실시합니다.


그러나 더 강력한 두 번째 단계는 gitattribute 필터 드라이버와 스머지 스텝을 추가하는 것입니다.

필터 드라이버

트리를 는 에서 만 실행할 수 있습니다..gitattributes 「」를 합니다.LF eol및 적용할 다른 형식 지정 옵션을 지정합니다.
아까', '아까', '아까',clear스크립트는 아무것도 하지 않습니다.커밋 후 필요한 포맷을 적용하여 파일을 변환합니다.

맥락

네가 만약

  1. 텍스트 파일에 대해 모든 사용자에게 LF 행 엔딩을 강제로 지정하려고 합니다.
  2. 모든 사용자가 git 설정을 변경하는지 확인할 수 없습니다.

git 2.10부터 가능합니다.2.10 이후가 필요합니다.이것은 2.10이 eol=lf와 함께 text=auto의 동작을 수정했기 때문입니다.출처.

솔루션

를 넣다.gitattributes에는 다음과 같은되어 있습니다.

* text=auto eol=lf

커밋해.

옵션 조정

또한 저장소의 루트에 를 추가하여 최신 도구에서 원하는 줄 끝의 새 파일을 만들 수도 있습니다.

# EditorConfig is awesome: http://EditorConfig.org

# top-most EditorConfig file
root = true

# Unix-style newlines with a newline ending every file
[*]
end_of_line = lf
insert_final_newline = true

core.autocrlf=input 이 할 도 있습니다.git update-index --refresh "/"git reset --hard변경사항이 적용되도록 하기 위해서입니다.

★★★★★★★★★★★★★★★★ core.autocrlfinput시 가 있으면 LF를), 식으로든 되어도 newline-conversion ( repo;newline-conversion lineooo , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 어떤 식으로든 작업 복사본에 CRLF를 삽입해도 repo에 들어가지 않습니다.

이 문제의 해결 방법은 https://help.github.com/en/github/using-git/configuring-git-to-handle-line-endings 에서 찾을 수 있습니다.

Windows에서 이 문제를 해결하는 방법에 대한 간단한 설명:

회선 말미에 대한 글로벌 설정 git 구성 코어.autocrlf 명령어는 Git이 행 끝을 처리하는 방법을 변경하기 위해 사용됩니다.그것은 하나의 논거가 필요하다.

Windows 에서는, 설정에 true 를 건네기만 하면 됩니다.예를 들어 다음과 같습니다.C:>git config --글로벌코어autocrf true(오토크렐프 참

행운을 빌어요, 도움이 됐으면 좋겠어요.

언급URL : https://stackoverflow.com/questions/2517190/how-do-i-force-git-to-use-lf-instead-of-crlf-under-windows

반응형