无法摆脱git line结束问题

时间:2014-12-11 22:56:19

标签: git git-branch

在当前项目中,我们有多个用户从多个计算机(如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。

1 个答案:

答案 0 :(得分:1)

你可能想看看我的一个问题,也处理行结尾

Git line endings after normalization

我认为答案是通过在.gitattributes中添加以下内容来阻止git进行任何规范化

* -text
* whitespace=cr-at-eol

这会让你掌控一切 - 你所要做的就是将每个文件设置为你想要的行结束,一次性操作。对于不同操作系统上的编辑器只能处理具有其本机行结尾(IMNSHO)的文件时,行结尾的魔术转换是一种延续。如果您使用记事本进行编码,这只是一个问题: - )