我修改了我.gitconfig
的方式,使我在执行时有一些颜色git diff
:
$ cat .gitconfig
[color]
ui = true
我正在使用 ubuntu 机器,我使用 VIM 编辑了一些代码。编辑文件后执行git diff
一次,一次执行一次,一次不执行一次ui=true
。
问题:在第一种情况下,我有^M
字符和编辑行的结尾。color.ui
但是,在打开或使用vim
, cat
, more
.. 查看被操纵文件时,我看不到那些。
这可能是一个编码问题。'git diff' 命令正在执行 Vim,认为文件格式是 Dos。
当您使用任何其他命令时,它会被正确识别为 Unix 文件。
你可以试试:
:set fileformat=unix
在你的 git diff 窗口中吗?
我不确定这是根本原因,因为我没有看到该ui
选项的链接。
通过设置为我解决了这个core.whitespace
问题cr-at-eol
将行尾的回车视为行终止符的一部分(git-config docs)
这可以添加到每个项目或全局 git 配置文件中,如下所示:
[core]
whitespace = cr-at-eol
这解决了由于另一个非行尾更改而将 ^M 隐藏在差异中的行末尾的问题。目的不是忽略唯一区别是行尾的更改。我在带有core.autocrlf
=的窗口上true
,因此预计行尾不匹配。
我唯一要注意的是,我不知道这是否会影响 git 是否会标记 EOL 中可能想要提交的真正更改,但也许使用 autocrlf=true 永远不会出现这种情况。
此处描述了另一种修复方法,更有针对性(但更骇人听闻)。
请查看 Github 出色的“处理行尾”页面:
https://help.github.com/articles/dealing-with-line-endings
您可能想要设置 core.autocrlf 然后重新规范化您的存储库。