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

时间:2016-07-27 19:10:31

标签: git line-endings

我在forked和上游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。

1 个答案:

答案 0 :(得分:9)

^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回车。