'git diff'中的^M是什么意思?
What is the meaning of ^M in 'git diff'?
我在分叉和上游 Bitbucket 存储库之间比较文件:
$ git diff origin/branchA..upstream/branchB -- some/file/path.xyz
似乎return几乎每个文件都有相同的区别:
-<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.
^M
表示从行首carriage return. This diff means something removed a Unicode BOM,在末尾加了一个CR。
^
符号代表Control,所以^M
表示Ctrl+M.
要将其转换为实际的 ASCII 字符代码,您需要获取基本字符并翻转位 6(即与 64 进行异或运算)。对于字母,这仅意味着减去 64。例如^A
是字符代码 1(因为 A
是 65)。 ^M
是77 - 64 = 13(因为M
是77),对应ASCII中的回车return。
^M 开始出现在我的任何地方,因为我的系统上没有安装 npm(linux 子系统)
一旦我安装了 npm 并做了 sudo apt update,所有的 ^M 都消失了。
不确定您是否遇到过这种情况,但这是一个可能的解决方案。
我在分叉和上游 Bitbucket 存储库之间比较文件:
$ git diff origin/branchA..upstream/branchB -- some/file/path.xyz
似乎return几乎每个文件都有相同的区别:
-<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.
^M
表示从行首carriage return. This diff means something removed a Unicode BOM,在末尾加了一个CR。
^
符号代表Control,所以^M
表示Ctrl+M.
要将其转换为实际的 ASCII 字符代码,您需要获取基本字符并翻转位 6(即与 64 进行异或运算)。对于字母,这仅意味着减去 64。例如^A
是字符代码 1(因为 A
是 65)。 ^M
是77 - 64 = 13(因为M
是77),对应ASCII中的回车return。
^M 开始出现在我的任何地方,因为我的系统上没有安装 npm(linux 子系统)
一旦我安装了 npm 并做了 sudo apt update,所有的 ^M 都消失了。
不确定您是否遇到过这种情况,但这是一个可能的解决方案。