질문 : LF를 CRLF로 대체하는 자식
bash를 사용하여 Windows XP 시스템에서 git 실행 SVN에서 프로젝트를 내 보낸 다음 베어 저장소를 복제했습니다.
그런 다음 내보내기를 베어 리포지토리 디렉토리에 붙여넣고 다음을 수행했습니다.
git add -A
그런 다음 다음과 같은 메시지 목록을 받았습니다.
LF는 CRLF로 대체됩니다.
이 전환의 결과는 무엇입니까? 이것은 Visual Studio의 .NET 솔루션입니다.
답변
이 메시지는 Windows core.autocrlf
로 인해 발생합니다.
autocrlf
의 개념은 줄 끝 변환을 투명하게 처리하는 것입니다. 그리고 그렇습니다!
나쁜 소식 : 값을 수동으로 구성해야합니다.
좋은 소식 : git 설치 당 한 번만 수행해야합니다 (프로젝트 설정도 가능).
autocrlf
작동 방식 :
core.autocrlf=true: core.autocrlf=input: core.autocrlf=false:
repo repo repo
^ V ^ V ^ V
/ \ / \ / \
crlf->lf lf->crlf crlf->lf \ / \
/ \ / \ / \
여기서 crlf
= win-style end-of-line 마커, lf
= unix-style (및 mac osx)입니다.
(위의 세 가지 옵션에 영향을 미치지 않는 pre-osx cr
이 경고는 언제 표시됩니까 (Windows에서)
– autocrlf
= 파일 중 하나에 유닉스 스타일 lf
true
(= 드물게),
– autocrlf
= 파일 중 하나에 win-style crlf
input
(= 거의 항상),
– autocrlf
= false
– 절대!
이 경고는 무엇을 의미합니까?
경고 "LF를 CRLF로 대체 될 것"은 (가지고 있다고 autocrlf
= true
커밋 체크 아웃주기 (이 창 스타일 CRLF로 대체됩니다) 후 유닉스 스타일의 LF를 잃게됩니다). Git은 Windows에서 유닉스 스타일 LF를 사용할 것으로 기대하지 않습니다.
"CRLF가 LF로 대체 될 것입니다 "라는 경고는 커밋 체크 아웃주기 후에 ( autocrlf
= input
을 가짐) Windows 스타일의 CRLF를 잃게 될 것입니다 (유닉스 스타일 LF로 대체 됨). 창 아래에서 input
을 사용하지 마십시오.
autocrlf
작동 방식을 보여주는 또 다른 방법
1) true: x -> LF -> CRLF
2) input: x -> LF -> LF
3) false: x -> x -> x
여기서 x 는 CRLF (windows 스타일) 또는 LF (unix 스타일)이고 화살표는
file to commit -> repository -> checked out file
어떻게 고치는 지
core.autocrlf
기본값은 git 설치 중에 선택되며 시스템 전체 gitconfig ( %ProgramFiles(x86)%\git\etc\gitconfig
)에 저장됩니다. 또한 (다음 순서로 계단식) 있습니다.
~/.gitconfig
에있는 "global"(사용자 별) gitconfig, 또 다른$XDG_CONFIG_HOME/git/config
또는 $HOME/.config/git/config
"global"(사용자 별) gitconfig 및
– 작업 디렉토리의 .git/config
에있는 "local"(repo 당) gitconfig.
따라서 git config core.autocrlf
를 작성하여 현재 사용되는 값을 확인하고
– 시스템 전체 gitconfig # 시스템 별 솔루션 autocrlf=false
– git config --global core.autocrlf false
# 사용자 별 솔루션
– git config --local core.autocrlf false
# 프로젝트 별 솔루션
경고
– git config
gitattributes
설정으로 재정의 할 수 있습니다.
– crlf -> lf
변환은 새 파일을 추가 할 때만 발생 crlf
파일은 영향을받지 않습니다.
도덕 (Windows 용) :core.autocrlf
true
core.autocrlf = true를 사용합니다 (그리고 unix 라인 엔딩을 사용하도록 편집기 / IDE를 구성하지 않으려는 경우).core.autocrlf
= false
를 사용합니다 (또는 편집기 / IDE가 유닉스 줄 끝을 사용하도록 구성한 경우).
-합당한 이유가없는 한 core.autocrlf
= input
사용 하지 마십시오 (예 : Windows에서 유닉스 유틸리티를 사용하거나 메이크 파일 문제가 발생한 경우).
추신 Windows 용 git을 설치할 때 무엇을 선택해야합니까?
Unix에서 프로젝트를 사용 하지 않으려 는 경우 기본 첫 번째 옵션에 동의하지 마십시오. 세 번째 항목 (있는 그대로 체크 아웃,있는 그대로 커밋 )을 선택합니다. 이 메시지가 표시되지 않습니다. 이제까지.
PPS 개인적으로 선호하는 것은 Unix 스타일 엔딩을 사용 하도록 편집기 / IDE core.autocrlf
를 false
설정하는 것입니다.
출처 : https://stackoverflow.com/questions/1967370/git-replacing-lf-with-crlf
'개발관련 > Git' 카테고리의 다른 글
특정 단어에 대한 Git 커밋 차이점 또는 내용을 grep하는 방법 (0) | 2021.12.01 |
---|---|
삭제 된 원격 브랜치로 origin에서 가져 오는 방법 (0) | 2021.12.01 |
GitHub 저장소에서 단일 폴더 또는 디렉토리 다운로드 (0) | 2021.11.30 |
Git으로 부분적으로 커밋 선택하기 (0) | 2021.11.30 |
git 커밋 및 태그를 동시에 푸시하는 방법 (0) | 2021.11.30 |