现在主力开发环境从 VIM 迁移到了 VSCode 下,但是在 WSL 命令行下使用 git 这个习惯一直改不掉,感觉 VSCode 里使用 git 不太方便。但是同时使用 VSCode 和 wsl git 遇到了一个 ^M 后缀的问题。
复现步骤
Windows 系统上,打开 vscode 编辑一个文件 a.md,在不关闭这个文件的情况下。在 wsl Ubuntu 下使用 git status 命令,会发现文件中的每行被加上了 ^M 后缀。
> git status
On branch main
Changes not staged for commit:
modified: a.md
git diff
会看到,除了最后一行,每行被加上了 ^M 后缀。
> git diff
--- a/a.md
+++ b/a.md
-hello
+hello^M
world
^M 是什么
^M 代表的是回车符 CR,也就是 \r。
- 在 Unix 系统中,换行符是 LF(\n)
- 而 Windows 默认使用 CRLF(\r\n)
不同系统中的默认 autocrlf 配置
Windows 下返回 true
C:\Users\Lenovo>git config core.autocrlf
true
WSL Ubuntu Linux 下无返回
> git config core.autocrlf
返回值及含义
- true 检出时自动转换 LF → CRLF,提交时转换 CRLF → LF(适合 Windows)
- input 提交时转换 CRLF → LF,但检出时不转换(适合跨平台协作)
- false 禁用自动换行符转换(可能导致混合换行符问题)
- 无输出 未配置此选项,Git 默认不自动处理换行符
如何规避
关闭 vscode 时,使用 git status 就不会出现这个问题。
说明 ^M 是 VSCode 自动实时给加上的。
结论
两方都对,不需要配置。
避免同时使用就行了,使用 vscode terminal 中的 git 命令就行。
微信关注我哦 👍
我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式