记事本编辑Git提交消息时多行合并,core.autocrlf已为true如何解决?
Git提交消息换行失效问题排查结论
前置说明:你提到的默认提示翻译如下
# 请输入本次变更的提交消息 # 以'#'开头的行将被忽略,空消息会终止提交操作 # 当前分支:mo-dev # 待提交的变更: # 修改:README.txt # 新增:new_mo_file.txt
根因分析
你遇到的问题和core.autocrlf配置无关,该配置仅作用于Git仓库中托管的普通文件的换行符转换,不涉及提交消息的编辑与读取逻辑,具体原因如下:
- 旧版Windows系统记事本不识别LF格式换行:Git生成的提交消息临时文件默认使用LF(Unix格式)作为行结束符,Win10 1809版本之前的记事本无法识别LF换行,会将所有换行符替换为空格,导致你看到所有内容被拼接为一行。
- 提交消息解析规则影响:Git提交消息默认将开头连续无空行分隔的内容识别为标题段,部分Git日志展示命令(如
git log --oneline)会自动将标题段的换行拼接为单行展示,属于正常逻辑。 - 未指定适配的编辑器:Git未配置专用编辑器时默认调用系统记事本,记事本本身对纯文本跨平台换行格式的兼容性极差,是该问题的核心诱因。
修复方案
- 更换Git默认编辑器为兼容性更好的工具,比如VS Code,执行命令
git config --global core.editor "code --wait"即可完成配置,后续提交时会自动唤起VS Code编辑提交消息,换行不会出现错乱。 - 若需继续使用记事本,将Windows系统升级到Win10 1809及以上版本,该版本开始记事本已新增LF换行识别支持。
内容的提问来源于stack exchange,提问作者Mohammad
相关产品推荐
相关产品推荐

