git - 'git diff' 中的 ^M 是什么意思?

标签 git line-endings

我在 fork 和上游 Bitbucket 存储库之间比较文件:

$ git diff origin/branchA..upstream/branchB -- 一些/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。

最佳答案

^M 代表carriage return .此差异意味着删除了 Unicode BOM 的内容从行首开始并在末尾添加一个 CR。

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

要将其转换为实际的 ASCII 字符代码,您需要获取基本字符并翻转第 6 位(即与 64 进行异或运算)。对于字母,这仅意味着减去 64。例如^A 是字符代码 1(因为 A 是 65)。 ^M是77 - 64 = 13(因为M是77),对应ASCII中的回车。

关于git - 'git diff' 中的 ^M 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38621307/

相关文章:

git - 为什么 .gitattributes 不会覆盖 Linux 上的 core.autocrlf 配置?

android - 内核 bash 脚本编译错误

visual-studio - 如何在 Visual Studio (Express) 2008 中强制使用 unix (LF) 行尾?

Git 工具 `tig` : What do those letters in the graph mean?

混帐克隆。如何通过硬链接(hard link)克隆本地仓库?

c++ - Visual Studio 项目设置和 Git

windows - 环境 : bash\r: No such file or directory

Linux 将 csv 中的 ^M$ 替换为 $

Git-修改 .git refs 目录中的提交数据有什么危险

java - 使用控制台使用git,使用IDE(Eclipse)开发时需要考虑哪些事项?