首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >‘`git加号’将^M添加到每一行的末尾

‘`git加号’将^M添加到每一行的末尾
EN

Stack Overflow用户
提问于 2015-01-21 21:02:59
回答 3查看 9.4K关注 0票数 12

我在Ubuntu 14.04。我正在用Vim编辑文件。突然,我开始注意到,我在git diff filename中看到的更改在插入或更改的每一行末尾都包含了^M。因此,在我将git add运行到filename之后,我在git diff --staged中看到,每一行在末尾都有 ^M ,因此,如果我对整个文件(E 213>即使我E 114只更改了一行E 215)进行了更改。请帮我理解一下这里发生了什么。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-01-21 21:09:30

您的文件在任何时候都是从Windows计算机签入吗?Windows将CR+LF添加到行尾,而其他操作系统只使用LF。如果您已经将core.autocrlf设置为false,那么git diff将将CR字符突出显示为^M。若要关闭此设置,可以更改core.whitespace设置:

代码语言:javascript
代码运行次数:0
运行
复制
git config --global core.whitespace cr-at-eol
票数 12
EN

Stack Overflow用户

发布于 2018-06-08 11:08:42

这为我解决了这个问题,我引用以下资料来源:core.autocrlf解释

希望这能帮到别人!

core.autocrlf

如果您正在Windows上编程,并且与那些不是(或者反之亦然)的人一起工作,那么您可能会在某个时候遇到行结束问题。这是因为Windows对其文件中的新行使用回车字符和行提要字符,而Mac和Linux系统只使用linefeed字符。这是一个微妙但令人难以置信的跨平台工作的事实;Windows上的许多编辑器默默地用CRLF替换现有的LF样式行尾,或者在用户点击enter键时插入两个行尾字符。

当您将文件添加到索引中时,Git可以自动将CRLF行尾转换为LF,反之亦然,当它将代码签出到文件系统时。您可以使用core.autocrlf设置打开此功能。如果您在Windows机器上,将其设置为true --这将在签出代码时将LF结尾转换为CRLF:

代码语言:javascript
代码运行次数:0
运行
复制
$ git config --global core.autocrlf true
票数 8
EN

Stack Overflow用户

发布于 2020-12-26 08:51:32

当我将整个项目直接从Windows复制到Linux时,我也遇到了类似的问题。对于这个文档,我在Linux终端上运行了以下命令,问题得到了解决:

代码语言:javascript
代码运行次数:0
运行
复制
$ git config --global core.autocrlf input
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28076760

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档