使用 git 预提交挂钩修复 mac/windows 新行?

sob*_*3ch 4 git githooks git-bash

在我们的办公室,我们的团队由大约 10 名开发人员组成。他们大多数都有 Mac 机。最近我意识到,当我检查我的工作差异时(仅更改一行代码后),几乎每一行都发生了更改,但git diff显示您的更改与原始更改完全相同。经过一番研究,结果发现这是一条不同的新线路。在我做任何事情之前,它是'\r\n'(CR+LF,0x0D0A),在我更改之后,所有非Unix新行(\r\n)都更改为Unix新行(\n)。

我意识到我可以要求我的同事更改他们的 IDE 设置,但我意识到我可以只准备一些需要在他们每次提交时运行的脚本。

如何在 git 提交之前运行 bash 脚本?如何使用 git 预提交钩子?

Wło*_*jda 7

一切都在https://help.github.com/articles/dealing-with-line-endings 和这里http://git-scm.com/docs/gitattributes#_checking-out_and_checking-in上进行了解释

对于 Linux/Mac 机器使用

git config --global core.autocrlf input
Run Code Online (Sandbox Code Playgroud)

对于 Windows 机器使用

git config --global core.autocrlf true
Run Code Online (Sandbox Code Playgroud)

使用此设置 git 会将所有\r\n行结尾转换为\n每次提交之前。

  • Windows 用户_可能_也想要 `\n` 行结尾。在这种情况下,最好在 git hook 中处理转换。 (3认同)