当使用 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 存储库相同的分区,因为它是 FAT32,Ubuntu 会自动挂载该分区。
最佳答案
这听起来像是 CRLF 问题。 Windows 使用 CRLF 来表示行尾,而 Linux 仅使用 LF。 Git 本身只使用 LF。当您从 Windows 切换到 Linux 时,git 认为文件已更改,因为它认为不必将每行结尾的 CRLF 转换为 LF,因此文件会获得额外的 CR 字符。
查看此 blog post on the subject进行广泛的讨论。
这全部由 core.eol
配置选项控制。通常,这被设置为 native
,它告诉 git 使用您的操作系统 EOL 约定。你最好的选择是创建一个 .gitattributes
文件作为帖子指定的,告诉 get 使用 LF 而不管操作系统。
关于git - 所有文件在 Ubuntu 中取消暂存,但在 Windows 中不,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18488329/