我在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只是说不要担心它说:)