git diff显示^M,颜色为真
我修改了我的git diff显示^M,颜色为真,git,vim,Git,Vim,我修改了我的.gitconfig,这样在执行git diff时就有了一些颜色: $ cat .gitconfig [color] ui = true 我在ubuntu机器上工作,我用VIM编辑了一些代码。编辑文件后,执行git diff,一次带ui=true,一次不带ui=true 问题:在第一种情况下,我有^M个字符和编辑行的结尾。但是,当打开color.ui或使用vim、cat、更多查看时,我看不到这些。。在被操纵的文件上。这可能是一个编码问题。“git diff”命令正在执行Vim,认
.gitconfig
,这样在执行git diff
时就有了一些颜色:
$ cat .gitconfig
[color]
ui = true
我在ubuntu机器上工作,我用VIM编辑了一些代码。编辑文件后,执行git diff
,一次带ui=true,一次不带ui=true
问题:在第一种情况下,我有^M个
字符和编辑行的结尾。但是,当打开color.ui
或使用vim
、cat
、更多查看时,我看不到这些。。在被操纵的文件上。这可能是一个编码问题。“git diff”命令正在执行Vim,认为文件格式是Dos
当您使用任何其他命令时,它会被正确识别为Unix文件
你能试试吗
:设置fileformat=unix
在你的git diff窗口中
我不确定这是否是根本原因,因为我看不到带有ui
选项的链接。请查看Github出色的“处理行尾”页面:
您可能需要设置core.autocrlf,然后重新规范化您的存储库。通过将core.whitespace
设置为cr-at-eol
将行尾的回车符视为行终止符的一部分
可以按如下方式将其添加到每个项目或全局git配置文件中:
[core]
whitespace = cr-at-eol
这解决了由于另一个非行结束更改而在差异中的行的末尾隐藏^M的问题。这样做的目的不是要忽略更改,因为更改的唯一区别是行的结尾。我在windows上使用的是core.autocrlf
=true
,因此预计行尾不匹配
我唯一要提醒的是,我不知道这是否会影响git是否会在EOL中标记出您可能想要提交的真正更改,但如果autocrlf=true,则可能永远不会出现这种情况
另一种更具针对性(但稍微有点黑客性)的修复方法已被描述。您对“git diff window”的确切含义是什么?我只是在shell中做这件事,没有任何特定的vim窗口。啊,对不起,我以为你在使用“vim diff”作为git的diff工具。因此,如果您使用Vim打开文件,是否可以从:set fileformat?
给出响应。有关详细信息,请参阅。fileformat=dos
。当切换到unix
时,^M
消失。伟大的我有一些副作用,不知怎么的,我所有的代码看起来都变了,但基本上这就是我问题的解决方案。谢谢可能是某个编辑器或签入操作转换了文件的结束行。尝试找出根本原因,因为您不想花时间转换文件格式。检查git autocrlf设置是否未设置。在您的帖子之后,这对我来说很有效:git config--global core.whitespace cr at eol
。我想可以先执行git config--global core.whitespace
来查看它的设置。