【问题标题】:Fixing mac/windows new lines with git pre-commit hook?使用 git pre-commit hook 修复 mac/windows 新行?
【发布时间】:2013-02-19 19:46:27
【问题描述】:

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

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

如何在 git commit 之前运行 bash 脚本? git pre-commit hook如何使用?

【问题讨论】:

    标签: git githooks git-bash


    【解决方案1】:

    一切都在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
    

    对于 Windows 机器使用

    git config --global core.autocrlf true
    

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

    【讨论】:

    • Mac 现在使用\n 作为行尾。我找不到来源,但这是事实。
    • 这是真的en.wikipedia.org/wiki/Newline#Representations 但是我的一些同事的 IDE 似乎设置为非 Unix 行尾。
    • Windows 用户可能也想要\n 行尾。在这种情况下,最好在 git hook 中处理转换。
    猜你喜欢
    • 2015-08-19
    • 1970-01-01
    • 1970-01-01
    • 2011-05-18
    • 1970-01-01
    • 2011-12-16
    • 1970-01-01
    • 2023-04-11
    • 2020-04-08
    相关资源
    最近更新 更多