1

我在 Windows 7 上工作,为了防止 EOL 问题,我.gitattributes按以下方式设置了一个文件(如github 帮助中所述):

* text=auto

*.js text

但是现在,当我提交一个js只有LF行尾的文件时,我会收到警告:

warning: LF will be replaced by CRLF in XXX.js.
The file will have its original line endings in your working directory.

好吧,这听起来就像我将CRLF在我的存储库和LF我的工作目录中一样,即使它应该(并且我希望它是)完全相反。-file的js行尾仍在LF提交之后。

我是在阅读错误的警告还是.gitattributes以错误的方式设置?谢谢!

ps 我的全局 git 配置有autocrlf = true,但是由于.gitattributes文件的原因,在提交时不应该影响 EOL 转换

ppsjs文件在子目录中

4

2 回答 2

2

您应该禁用autocrlf- 它不会导致这种“情况”,但它确实与 gitattributes 设置发生冲突并且没有任何好处。

您的回购中的 EOL 转换没有任何问题。您引用的消息告诉您,如果您再次检出此文件(使用这些设置),您的工作目录中将有 CRLF。但现在它会留在LF。

如果你想知道你的 repo 中有哪些行尾内容,请运行以下命令:

git show commit:path/to/file | file -k -

如果您想摆脱该消息,请将您的编辑器设置为使用 CRLF 保存文件。或者更好:如果您的所有工具都支持 LF 结尾,请将此 repo 设置为在结帐时使用 LF(如果您不小心使用 CRLF 保存文件,它仍然会被规范化):

git config core.eol lf

注意:这可能仅在您设置core.autocrlf为时才有效false

于 2012-12-27T15:18:37.157 回答
1

尽管有措辞不好的警告,Git 正在做你想做的事,你不必更改任何东西(该警告只讨论工作目录 AFAIK 而不是数据库发生的事情)。

LF 将仅在 repo 中,如果您 rm 文件并再次检查它,它将在工作树中转换为 CRLF(仅)。

我见过有人说在行尾方面不要更改本地核心设置/全局变量(文章git hub 参考)(我没有看到与 autocrlf 冲突)并且只使用 .gitattribute 因为它为项目您的工作,这是较新的方式。

如果你只想让东西成为 LF,你应该使用不同的 git 属性行,但坚持你原来的问题,这很好。(文档页面和你的github页面似乎说text eol=lf你是否只想要 LF)

这是一个 necropost 只是说别担心它应该这么说:)

于 2014-10-07T03:32:44.873 回答