使用gitattributes替换存储库行结尾

时间:2017-03-01 16:09:18

标签: git

我试图将共享存储库中的行结尾规范化,该存储库包含windows和unix特定文件,但我无法让它按照我期望的方式运行。

我们都在Windows机箱上开发,但要求行结尾(取决于文件类型)为LF或CRLF。建议开发人员将autocrlf设置为false,以便某些需要CRLF的文件不会在存储库中更改(存在windows和unix文件格式的混合),并在必要时手动更改行结尾。 / p>

有人建议使用gitattributes可以在某种程度上减少警察应该使用哪个文件结尾的需要,但是我无法让这个工作。

这些是我的用户git设置:

[core]
    eol = native
    bare = false
    filemode = false
    hideDotFiles = dotGitOnly
    ignorecase = true
    repositoryformatversion = 0
    symlinks = false
    autocrlf = true
    editor = 'C:/Program Files (x86)/Notepad++/notepad++.exe' -multiInst -nosession -noPlugin

programdata git设置:

[core]
    fscache = true

存储库git设置:

[core]
    logallrefupdates = true

.gitattributes文件:

# convert all to lf
* text eol=lf

# convert these to windows line endings
*.sbm   text eol=crlf
*.sbp   text eol=crlf
*.sin   text eol=crlf
*.bat   text eol=crlf
*.cmd   text eol=crlf
*.ini   text eol=crlf
*.inf   text eol=crlf
/strataclient/BubbleHelp/* text eol=crlf

# don't touch binary files
*.dot   binary
*.dll   binary
*.exe   binary
*.ocx   binary
*.lic   binary
*.cfn   binary

为了测试它,我创建了一个包含.gitattributes文件的小提交(我一直在修改它以测试不同的组合),然后运行以下命令:

git rm --cached -r .
git reset --hard

它似乎改变了一些行结尾,但不是我一直期待的方式。

我试图遵循各种指南,但似乎都没有预期会发生深远的变化。我希望所有文本文件都更改为LF(例如java,properties,txt),除非它是CRLF列出的类型之一(例如cmd,bat)。

1 个答案:

答案 0 :(得分:1)

我偶然偶然发现了这个问题,我很好奇,问问在2年以上之后这仍然是一个问题吗?

Anyhoo!在最新的Git版本中,您只需提交 .gitattributes 文件即可执行git add --renormalize,如下所示:Configuring Git to handle line endings