【问题标题】:^M characters in git commit message (git commit -v)git commit 消息中的 ^M 个字符 (git commit -v)
【发布时间】:2012-03-22 15:58:34
【问题描述】:

我遇到了一个奇怪的问题,我的 git commit 消息中出现了很多 ^M 字符。请找到随附的屏幕截图。这不会造成任何问题,只是让人读起来很烦。

感谢提示。

【问题讨论】:

  • “git commit message”与截图内容无关,标题具有误导性
  • 这是我的 git commit -v,如果我不准确,请见谅。

标签: git vim line-endings


【解决方案1】:

“正确的方式”,如果你在跨平台环境中使用 Git,与 Abhijeet 的回答相反,是:

了解并正确配置每个客户端中的 core.autocrlf 设置

阅读本地主题"Why should I use core.autocrlf=true in Git?"作为一个很好的起点

【讨论】:

  • 谢谢,这成功了!我还将我所有的文件都转换为 unix 格式,看起来我从 fork 的 repo 是在 windows 上开发的。
【解决方案2】:

那是一个 Windows 换行符。和 windows 和 linux 中的换行符不同。

您可以使用 dos2unix 将其删除。

各种方法:http://www.cyberciti.biz/faq/howto-unix-linux-convert-dos-newlines-cr-lf-unix-text-format/

【讨论】:

  • 不完全正确:它是 Windows 换行符的部分。在 windows 换行符是 CR LF,在 linux 上是 LFCR 显示为 ^M,在 mac 换行符是(是?)单个 CR。不需要使用 dos2unix 或类似的,如果你设置了'fileencodings' 选项的所需值或者总是写e ++ff=dos 没问题,vim 可以正确处理。
【解决方案3】:

我在 Windows 上,不想将 autocrlf 设置为 true。我通过将以下内容放入我的 .vimrc 中解决了这个问题

" settings for git commit messages
function GitCommitSettings()
    %s/^M//g               " remove ^M added by git diff
    syntax sync fromstart  " refresh syntax highlight after replace
    1                      " move to line 1
endfunction
au BufNewFile,BufRead COMMIT_EDITMSG call GitCommitSettings()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-21
    • 2012-05-30
    • 1970-01-01
    • 2017-10-11
    相关资源
    最近更新 更多