【问题标题】:Git: convert carriage return \r to new line \n with git hook?Git:使用 git hook 将回车符 \r 转换为换行符 \n?
【发布时间】:2026-02-16 11:05:02
【问题描述】:

一位程序员同事使用 Windows 计算机,在我们的源代码中到处都有回车。

有没有办法编写一个将所有\r\n 转换为\n 的git hook?

注意我之前没有使用过 git 钩子,所以多一点额外的手可能会有很长的路要走:)

【问题讨论】:

    标签: git githooks newline


    【解决方案1】:

    最简单的方法是在 Windows 端 set core.autocrlf to false
    (这样 Git 不会进行任何转换,并且不会影响 eol)。

    在 unix 方面,将 core.autocrlf 设置为 true 可以帮助恢复正确的 eol。
    正如 cmets 中提到的 mathepicI described in this SO answer 所提到的,从 Git1.7.2 开始,您可以使用 core.eol(本地),保持 core.autocrlf 为 false。

    否则,您可以使用text driver or a filter driver with gitattributes files
    无需挂钩。

    【讨论】:

    • VonC,也许我想将core.autocrlf 设置为真?我想要删除回车。
    • @macek:autocrlf 可能会在 Unix 端完成这项工作,但我建议在 Windows 端将其设置为 false,以免一开始就引入所有这些 crlf。我已经编辑了我的答案以反映这些选择和设置。
    • core.eol 是我认为的新方法。
    【解决方案2】:

    如果他们使用 TortoiseGit,在 Git->Config->Auto CRLF convert 下有一个选项可以为您执行此操作。

    【讨论】: