我修改了我的.gitconfig
,使我在执行git diff
时有了一些颜色:
$ cat .gitconfig
[color]
ui = true
我正在使用ubuntu机器,我使用VIM编辑了一些代码。编辑文件后执行git diff
,一次使用,一次不使用ui=true
。
问题:在第一种情况下,我有^M
个字符和已编辑行的结尾。但是,在转动color.ui
或使用vim
,cat
,more
..查看操作文件时,我看不到这些内容。
答案 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,然后重新规范您的存储库。