所有文件都在Ubuntu中未加载,但不是Windows

时间:2013-08-28 05:30:16

标签: git

使用Ubuntu时,我的所有文件都在Git中无法使用。

当我运行git diff时,Git显示:

--- a/<filename>
+++ b/<filename>
-<output of file>
+<output of file>

例如,

--- a/.gitignore
+++ b/.gitignore
-.tmp
-build
-node_modules
+.tmp
+build
+node_modules

但是,当我在Windows中使用Git时,Git会正确显示状态(所有提交和暂存的文件)

有关如何解决此问题的任何想法?

我在Ubuntu和Windows中都使用与Git repo相同的分区,并且因为它在FAT32中,所以Ubuntu会自动挂载分区。

1 个答案:

答案 0 :(得分:3)

这听起来像是一个CRLF问题。 Windows使用CRLF表示行尾,而Linux仅使用LF。 Git本身只使用LF。当您从Windows切换到Linux时,git会将文件视为已更改,因为它不认为必须将每行结束的CRLF转换为LF,因此文件会获得额外的CR字符。

请参阅此blog post on the subject进行广泛讨论。

这全部由core.eol配置选项控制。通常,这设置为native,告诉git使用您的操作系统EOL约定。您最好的选择是创建一个.gitattributes文件作为帖子指定,告诉使用LF而不管操作系统。