使用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会自动挂载分区。
答案 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而不管操作系统。