9

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

$ cat .gitconfig 
[color]
ui = true

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

问题:在第一种情况下,我有^M字符和编辑行的结尾。color.ui但是,在打开或使用vim, cat, more.. 查看被操纵文件时,我看不到那些。

4

3 回答 3

15

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

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

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

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

于 2013-01-22T16:12:39.247 回答
7

通过设置为我解决了这个core.whitespace问题cr-at-eol

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

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

[core]
    whitespace = cr-at-eol

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

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

此处描述了另一种修复方法,更有针对性(但更骇人听闻)。

于 2017-11-21T10:50:59.373 回答
1

请查看 Github 出色的“处理行尾”页面:

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

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

于 2013-11-29T09:58:39.653 回答