为什么^ M会附加到git diff中所有更新的行中

Raj*_*jan 4 git git-diff

我对源文件进行了一些更改。当我尝试使用diff时

git diff src/core/src/authentication.rs
Run Code Online (Sandbox Code Playgroud)

控制台上的差异已^M附加到我编辑的所有行。

+            Some(b) => {^M
+                Ok(b)^M
+            }^M
+        }^M
     }
Run Code Online (Sandbox Code Playgroud)

我在记事本中签出,看看是否可以在那里看到某些东西并清理干净,但是在尝试使用任何编码后都看不到。我在某处读到这是一个\r但不确定。无法在vim中替换/找到它。但是,这并非在我看到的所有文件中都会发生diff。为什么会这样呢?我想这不是我的源代码的一部分,而只与git有关。

编辑:我使用vim作为我的编辑器。

pri*_*kar 5

主要原因是用于表示换行符的字符序列。在Windows中,换行符由表示\r\n。因此,当我们在Unix / Linux编辑器(如VIM)上编辑文本(在Windows上创建)时,编辑器会看到一个额外的字符(因为UNIX中的换行符是\n)并尝试呈现它。输出结果为^ M。

在vim上处理它的一种方法是

:set ff=unix
:wq
Run Code Online (Sandbox Code Playgroud)

另一方面,它是github文档中提到的标准做法,即在基于git的存储库中使用“ \ n”作为换行符。为了在默认情况下进行设置,请将其添加到全局git config设置中。

$git config --global core.autocrlf true
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助。