줄 끝을 처리하는 나의 절차는 다음과 같습니다 (많은 repos에서 전투 테스트)
새로운 저장소를 만들 때 :
- 넣어
.gitattributes
에 매우 첫째, 다른 일반적인 같은 파일과 함께 커밋 .gitignore
및README.md
기존 리포지토리를 처리 할 때 :
.gitattributes
그에 따라 생성 / 수정
git commit -a -m "Modified gitattributes"
git rm --cached -r . && git reset --hard && git commit -a -m 'Normalize CRLF' -n"
-n
( --no-verify
미리 커밋 후크를 건너 뛰는 것입니다)
- 별칭으로 정의하기에 충분할 정도로 자주 수행해야합니다.
alias fixCRLF="..."
- 이전 명령을 반복
- 그렇습니다. 부두교이지만 일반적으로 명령을 두 번 실행해야합니다. 처음에는 일부 파일을 정규화 할 때, 두 번째로 더 많은 파일을 처리해야합니다. 일반적으로 새로운 커밋이 생성되지 않을 때까지 반복하는 것이 가장 좋습니다. :)
- 이전 (정규화 직전)과 새 분기간에 몇 번 앞뒤로 이동합니다. 브랜치를 전환 한 후 때때로 git은 재 정규화해야하는 더 많은 파일을 찾을 수 있습니다!
에서 .gitattributes
내가 LF EOL있는 것으로 명시 적으로 모든 텍스트 파일을 선언 하기 때문에 일반적으로 윈도우 도구는 Windows 이외의 도구가 CRLF와 호환되지 않습니다 동안 LF와 호환 (심지어 많은 nodejs이 줄 도구가 LF를 가정하고 따라서 파일의 EOL을 변경할 수 있습니다 명령).
내용 .gitattributes
내 .gitattributes
보통은 다음과 같습니다
*.html eol=lf
*.js eol=lf
*.json eol=lf
*.less eol=lf
*.md eol=lf
*.svg eol=lf
*.xml eol=lf
현재 리포지토리에서 git이 추적하는 고유 한 확장을 확인하려면 여기를 참조하십시오.
정규화 후 문제
이 작업이 끝나면 일반적인 경고가 하나 더 있습니다.
귀하 master
가 이미 최신 상태이고 정규화되었다고 확인한 다음 체크 아웃하십시오 outdated-branch
. 그 지점을 체크 아웃 한 직후에 git은 많은 파일을 수정 된 것으로 표시합니다.
해결책은 가짜 커밋 ( git add -A . && git commit -m 'fake commit'
) 을 수행하는 것 git rebase master
입니다. 리베이스가 끝나면 가짜 커밋이 사라집니다.