在当前项目中,我们有多个用户从多个计算机(如Windows,OSX和Ubuntu)编辑存储库。我已经尝试了各种设置来保持行结束的标准化,但我不断注意到repo中的随机文件的行结尾会发生变化。
首先,我在我的存储库中有这个git属性文件:
# These settings are for any web project
# Handle line endings automatically for files detected as text
# and leave all files detected as binary untouched.
* text=auto
#
# The above will handle all files NOT found below
#
# Documents
*.doc diff=astextplain eol=lf
*.DOC diff=astextplain eol=lf
*.docx diff=astextplain eol=lf
*.DOCX diff=astextplain eol=lf
*.dot diff=astextplain eol=lf
*.DOT diff=astextplain eol=lf
*.pdf diff=astextplain eol=lf
*.PDF diff=astextplain eol=lf
*.rtf diff=astextplain eol=lf
*.RTF diff=astextplain eol=lf
*.md text eol=lf
*.adoc text eol=lf
*.textile text eol=lf
*.mustache text eol=lf
*.csv text eol=lf
*.tab text eol=lf
*.tsv text eol=lf
*.sql text eol=lf
# Graphics
*.png binary
*.jpg binary
*.jpeg binary
*.gif binary
*.ico binary
*.svg text eol=lf
# These files are text and should be normalized (Convert crlf => lf)
*.md text eol=lf
*.adoc text eol=lf
*.textile text eol=lf
*.mustache text eol=lf
*.csv text eol=lf
*.tab text eol=lf
*.tsv text eol=lf
*.php text eol=lf
*.css text eol=lf
*.js text eol=lf
*.json text eol=lf
*.htm text eol=lf
*.html text eol=lf
*.xml text eol=lf
*.txt text eol=lf
*.ini text eol=lf
*.inc text eol=lf
*.pl text eol=lf
*.rb text eol=lf
*.py text eol=lf
*.scm text eol=lf
*.sql text eol=lf
.htaccess text eol=lf
# These files are binary and should be left untouched
# (binary is a macro for -text -diff)
*.mov binary
*.mp4 binary
*.mp3 binary
*.flv binary
*.fla binary
*.swf binary
*.gz binary
*.zip binary
*.7z binary
*.ttf binary
*.pyc binary
我在机器上设置了这些git设置(windows和osx和linux):
git config --global core.eol lf
git config --global core.autocrlf false
然而,我会间歇性地从git(cli)获得通知,当我从开发服务器(从一天结束时的测试更改更新)中提取更改时,我收到消息,指出CRLF将转换为LF提交。
虽然最近,我注意到我的同伙和我(在Windows上)并没有经常收到这些消息。但是mac / linux上的其他人似乎每次重新签出远程分支时都会得到它们(即使在删除本地版本之后)。运行时
git checkout -b develop -t origin/develop
他们应该拥有一个非常干净的目录,他们将拥有1-6个显示更改的文件。哪些只是行结尾。无论我们做什么,我们都无法在不承诺的情况下摆脱它们。即使它们被提交并直接推送到开发中,另一个取出后的dev将拉出一个新的开发分支(在删除本地开发分支之后)将获得另一个随机文件,状态将其CRLF结尾转换为LF。
答案 0 :(得分:1)
你可能想看看我的一个问题,也处理行结尾
Git line endings after normalization
我认为答案是通过在.gitattributes中添加以下内容来阻止git进行任何规范化
* -text
* whitespace=cr-at-eol
这会让你掌控一切 - 你所要做的就是将每个文件设置为你想要的行结束,一次性操作。对于不同操作系统上的编辑器只能处理具有其本机行结尾(IMNSHO)的文件时,行结尾的魔术转换是一种延续。如果您使用记事本进行编码,这只是一个问题: - )