【问题标题】:Git pre-commit running after commit?Git预提交在提交后运行?
【发布时间】:2017-12-19 17:59:37
【问题描述】:

我正在尝试在代码提交之前对其运行格式命令。我希望它在未格式化或在提交之前自动执行时不允许提交。

现在发生的是提交发生,并且格式在提交后作为非暂存更改应用。

这是我的.git/hooks/pre-commit

#!/bin/bash

go fmt src/*.go

【问题讨论】:

  • 您的脚本将在提交之前格式化您的工作树文件。 (预提交确实意味着它所说的。)您的问题是这与您的提交无关,它只是继续提交已经上演的内容。并不是说这能解决你的主要问题。

标签: git githooks


【解决方案1】:

格式化后,将文件添加到索引中:

#!/bin/bash

go fmt src/*.go
git add src/*.go
exit 0

在你的 README 中提及这个钩子可能是个好主意。以免忘记。

可能更严重的一点是,您对此提交的代码所做的编辑将与 go fmt 更改无法区分。

【讨论】:

  • 但请注意,这会将所有匹配 src/*.go 的文件添加到提交中,包括对已添加文件的修改,无论这是否是最初的意图。
  • 也不是,这将添加您在此特定提交中可能不想要的文件。例如。如果你修改了 file1 和 file2,但只想提交 file1,这将同时提交。
【解决方案2】:

在阅读了 Ian 的代码后,我有了一个似乎可行的想法。

#!/bin/bash

go fmt src/*.go
git add src/*.go

【讨论】:

    猜你喜欢
    • 2018-09-29
    • 1970-01-01
    • 2014-01-03
    • 2018-07-22
    • 1970-01-01
    • 1970-01-01
    • 2016-04-02
    • 2013-12-15
    相关资源
    最近更新 更多