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

ezd*_*ena 8 git vim

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

$ cat .gitconfig 
[color]
ui = true
Run Code Online (Sandbox Code Playgroud)

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

问题:在第一种情况下,我有^M字符和编辑行的结尾.然而,转弯时,我没有看到那些color.ui或看时vim,cat,more...在操纵文件.

Xav*_* T. 15

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

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

你可以试试: :set fileformat=unix 在你的git diff窗口?

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

  • 对不起,我以为你使用"vim diff"作为git的diff工具.所以如果用Vim打开文件,你可以从`:set fileformat?`给出响应.有关更多信息,请参见http://vim.wikia.com/wiki/File_format. (4认同)

spa*_*owt 7

这个问题是通过设置解决了我core.whitespacecr-at-eol

将行尾的回车符视为行终止符的一部分(git-config 文档)

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

[core]
    whitespace = cr-at-eol
Run Code Online (Sandbox Code Playgroud)

这解决了由于另一个非行尾更改而在差异中隐藏行尾的 ^M 问题。目的不是忽略唯一区别是行尾的更改。我在带有core.autocrlf= 的Windows 上true,因此预计行结束不匹配。

我唯一的警告是,我不知道这是否会影响 git 是否会在 EOL 中标记人们可能想要提交的真正更改,但也许 autocrlf=true 永远不会出现这种情况。

此处描述另一种修复方法,更有针对性(但稍微有点笨拙)。