git diff显示^ M,颜色为ui true

时间:2013-01-22 15:30:44

标签: git vim

我修改了我的.gitconfig,使我在执行git diff时有了一些颜色:

$ cat .gitconfig 
[color]
ui = true

我正在使用ubuntu机器,我使用VIM编辑了一些代码。编辑文件后执行git diff,一次使用,一次不使用ui=true

问题:在第一种情况下,我有^M个字符和已编辑行的结尾。但是,在转动color.ui或使用vimcatmore ..查看操作文件时,我看不到这些内容。

3 个答案:

答案 0 :(得分:14)

这可能是编码问题。 'git diff'命令正在执行Vim,认为文件格式为Dos。

当您使用任何其他命令时,它被正确识别为Unix文件。

你能试试吗:  :set fileformat=unix 在你的git diff窗口?

我不确定这是根本原因,因为我没有看到ui选项的链接。

答案 1 :(得分:3)

通过将core.whitespace设置为cr-at-eol

,我解决了这个问题
  

将行尾处的回车处理作为行终止符的一部分(git-config docs)

可以将其添加到每个项目或全局git配置文件中,如下所示:

[core]
    whitespace = cr-at-eol

这解决了由于另一个非行结束变化而将^ M隐藏在diff中的行末尾的问题。目的不是忽略变化,其中唯一的区别是行结束。我在core.autocrlf = true的窗口上,因此预计行结尾不匹配。

我唯一需要注意的是,我不知道这是否会影响git是否标记了EOL中可能想要提交的真正更改,但也许使用autocrlf = true,这将永远不会出现这种情况。

here描述了一个替代修复,更具针对性(但稍微有点粗暴)。

答案 2 :(得分:1)

请看看Github的优秀"处理行结尾"页:

https://help.github.com/articles/dealing-with-line-endings

您可能想要设置core.autocrlf,然后重新规范您的存储库。