【发布时间】:2026-02-16 11:05:02
【问题描述】:
一位程序员同事使用 Windows 计算机,在我们的源代码中到处都有回车。
有没有办法编写一个将所有\r\n 转换为\n 的git hook?
注意我之前没有使用过 git 钩子,所以多一点额外的手可能会有很长的路要走:)
【问题讨论】:
一位程序员同事使用 Windows 计算机,在我们的源代码中到处都有回车。
有没有办法编写一个将所有\r\n 转换为\n 的git hook?
注意我之前没有使用过 git 钩子,所以多一点额外的手可能会有很长的路要走:)
【问题讨论】:
最简单的方法是在 Windows 端 set core.autocrlf to false。
(这样 Git 不会进行任何转换,并且不会影响 eol)。
在 unix 方面,将 core.autocrlf 设置为 true 可以帮助恢复正确的 eol。
正如 cmets 中提到的 mathepic 和 I described in this SO answer 所提到的,从 Git1.7.2 开始,您可以使用 core.eol(本地),保持 core.autocrlf 为 false。
否则,您可以使用text driver or a filter driver with gitattributes files。
无需挂钩。
【讨论】:
core.autocrlf 设置为真?我想要删除回车。
autocrlf 可能会在 Unix 端完成这项工作,但我建议在 Windows 端将其设置为 false,以免一开始就引入所有这些 crlf。我已经编辑了我的答案以反映这些选择和设置。
core.eol 是我认为的新方法。
如果他们使用 TortoiseGit,在 Git->Config->Auto CRLF convert 下有一个选项可以为您执行此操作。
【讨论】: