在Git diff中^ M的含义是什么?

问题描述 投票:6回答:1

我在fork和上游BitBucket repos之间挖掘一个文件:

$ git diff origin/branchA..upstream/branchB -- some/file/path.xyz

它似乎为几乎每个文件返回相同的差异:

-<U+FEFF>@using Sitecore.Mvc
+@using Sitecore.Mvc^M

^M的确切含义是什么才出现在第一行之后?我在比较其他文件时也看到了这个问题。我在Windows Server 2008 R2计算机上。 core.autocrlf将被设置为true。 .gitattributes设置为text eol=lf。我的git版本是2.5.1.windows.1。

git line-endings
1个回答
12
投票

^M代表carriage return。这种差异意味着从行的开头删除了一个Unicode BOM并在末尾添加了一个CR。

^符号代表Control,所以^M表示Ctrl + M.

为了得到实际的ASCII字符代码,你取基本字符并翻转第6位(即XOR为64)。对于字母,这只意味着减去64.所以例如^A是字符代码1(因为A是65)。 ^M是77 - 64 = 13(因为M是77),它对应于ASCII中的回车。

© www.soinside.com 2019 - 2024. All rights reserved.