我刚刚在侧窗7上安装了ubuntu 7.我所有的git本地工作文件夹都在一个单独的数据分区上。
一切都是在Windows 7的git中提交的,但是在ubuntu的git中,运行git status
会显示修改后的所有内容。当我尝试git log
时,所有的历史记录仍然存在。
每次切换到其他操作系统时,我都不想提交所有内容。有解决方案吗?
答案 0 :(得分:4)
您的问题是,当您使用git默认配置检出Windows上的文件时,它们是在工作目录中使用CRLF
(Windows默认)行结尾创建的,但是作为LF
提交为跨平台兼容性。
现在你的Linux在每一行都看到了CRLF
并且说它与回购中的LF
不同。这就是为什么每条线都被报告为不同的原因。
我建议在Windows上将行结尾设置为LF
。在a previous answer我解释了如何做到这一点的细节。遵循这些步骤还可以在linux上启用行结束规范化到LF
,如果您不小心在Windows上创建了一些CRLF
并在以后在linux中提交,这将避免出现问题。
您也可以完全禁用行结束规范化,但这可能会在将来造成麻烦,除非您只使用一组完全固定的编辑器,其行结束处理您将非常了解。
答案 1 :(得分:2)
问题在于Windows上的换行符约定与Linux不同,因此在Ubuntu端,每个文件看起来都是完整修改的(在每行结束之前添加了一个CR)。这通常是因为repo以某种级别autocrlf
签出:在repo中,文件具有LF约定,但在Windows上签出时,文件具有CRLF行结尾。
如果您想安全地与Windows和Linux共享工作副本,请should just turn off core.autocrlf
。
答案 2 :(得分:0)
我猜测行结尾存在问题。您可能已经使用Windows行结尾提交了代码,当您在ubuntu git中检出代码时,将这些代码转换为unix样式行结尾。