git EOL是否转换了相反的方式? (尽pipe.gitattributes)

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

 * text=auto *.js text 

但现在,当我提交一个只有LF行结束的js文件时,我得到警告:

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

那么,这听起来像我将我的库和LF在我的工作目录中的CRLF ,即使它应该(而且我希望它)是另一种方式。 提交后, js文件的行尾仍然是LF

我读的警告是错误的还是我错误地设置了.gitattributes ? 谢谢!

ps我的全局gitconfiguration有autocrlf = true ,但不应该因为.gitattributes文件提交时提交EOL转换

pps的js文件是在一个子目录中

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

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

如果你想知道你的回购中有什么行结尾的东西,运行这个:

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

如果你想摆脱这个消息,把你的编辑器设置为用CRLF保存文件。 或者更好:如果你所有的工具都支持LF结尾,那么设置这个repo在结帐时使用LF(如果你不小心保存了一个带有CRLF的文件,它仍然会被标准化):

 git config core.eol lf 

注意:如果将core.autocrlf设置为false这可能只会起作用

Git正在做你想做的事情,尽管它措辞严厉,警告你不必改变任何东西(该警告只是谈论工作目录AFAIK而不是数据库)。

LF将仅在回购站中,如果您将该文件读取并再次检出,它将在工作树(仅)中转换为CRLF。

我已经看到人们说,当涉及到行结束时,不要更改本地核心设置/全局变量( 文章 git hub引用)(我没有看到与autocrlf的冲突),只使用.gitattribute,因为它使默认的项目你的工作,这是更新的方式。

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

这是一个necropost只是说不要担心它说:)