이 답변은 OP가 다중 OS 솔루션에 대한 필요성을 참조하기 때문에 관련이있는 것 같습니다. 이 Github 도움말 문서에서는 OS 간 행 끝을 처리하는 데 사용할 수있는 접근 방식을 자세히 설명합니다. 크로스 OS 라인 엔딩을 관리하기위한 글로벌 및 리포지토리 별 접근 방식이 있습니다.
글로벌 접근
Linux 또는 OS X에서 Git 줄 끝 처리를 구성합니다.
git config --global core.autocrlf input
Windows에서 Git 줄 끝 처리를 구성합니다.
git config --global core.autocrlf true
리포지토리 별 접근 방식 :
저장소의 루트에서 .gitattributes
파일을 만들고 프로젝트 파일에 대한 줄 끝 설정을 다음 형식으로 한 번에 한 줄씩 정의합니다. path_regex line-ending-settings
여기서는 line-ending-settings
다음 중 하나입니다.
- 본문
- 바이너리 (Git가 줄 끝을 수정해서는 안되는 파일-PNG와 같은 일부 이미지 유형이 브라우저에서 렌더링되지 않을 수 있기 때문)
text
값이 일치하는 파일의 라인 엔딩을 처리하는 방법에 망할 놈의 지시에 더 구성 할 수 있습니다 :
text
-줄 끝을 OS 기본 줄 끝으로 변경합니다.
text eol=crlf
- CRLF
체크 아웃시 줄 끝을 변환합니다 .
text eol=lf
- LF
체크 아웃시 줄 끝을 변환합니다 .
text=auto
-Git의 재량에 따라 라인 핸들을 남겨 두는 합리적인 기본값.
다음은 샘플 .gitattributes 파일의 내용입니다.
# Set the default behavior for all files.
* text=auto
# Normalized and converts to
# native line endings on checkout.
*.c text
*.h text
# Convert to CRLF line endings on checkout.
*.sln text eol=crlf
# Convert to LF line endings on checkout.
*.sh text eol=lf
# Binary files.
*.png binary
*.jpg binary
여기에서 줄 끝 설정을 변경 한 후 저장소를 새로 고치는 방법에 대해 자세히 알아 보십시오 . Tldr :
Git으로 파일을 백업하고 저장소의 모든 파일 (.git 디렉터리 제외)을 삭제 한 다음 파일을 모두 한 번에 복원합니다. 작업 내용이 손실되지 않도록 현재 파일을 Git에 저장합니다.
git add . -u
git commit -m "Saving files before refreshing line endings"
색인을 제거하고 Git이 작업 디렉토리를 다시 검색하도록합니다.
rm .git/index
모든 새 줄 끝을 선택하도록 Git 인덱스를 다시 작성하십시오.
git reset
다시 작성되고 정규화 된 파일을 표시합니다.
어떤 경우에는 이것이 완료되어야하는 전부입니다. 다른 사용자는 다음 추가 단계를 완료해야 할 수 있습니다.
git status
변경된 모든 파일을 다시 추가하고 커밋을 준비합니다. 변경되지 않은 파일 (있는 경우)을 검사 할 수있는 기회입니다.
git add -u
여기에서 "경고 : CRLF는 파일에서 LF로 대체 될 것입니다."라는 많은 메시지를 보는 것이 안전합니다.
.gitattributes 파일을 다시 작성하십시오.
git add .gitattributes
저장소에 변경 사항을 커밋합니다.
git commit -m "Normalize all the line endings"