如何在不尝试提交的情况下手动运行git pre-commit钩子?

cal*_*lum 33 githooks

我只是希望能够运行它以查看我的工作树中的代码是否通过它,而不实际尝试提交.

Ila*_*aja 44

只需pre-commit通过shell 运行脚本:

bash .git/hooks/pre-commit
Run Code Online (Sandbox Code Playgroud)

  • 哦,这很容易.它们似乎也可以直接执行,所以你可以做`./.git/hooks/precommit` (4认同)
  • 这不会检测/纠正所有现有文件中的所有问题 - 为此,您需要“预提交运行 --all-files”,请在此处查看我的答案。 (3认同)
  • 是的,它也可以直接执行。 (2认同)
  • 如果您发现这没有任何作用,请不要忘记“git add”文件! (2认同)
  • @javabrett 请注意,这个答案不是指 python 预提交包,而是指本机 git 预提交挂钩。你的命令对只使用本机 git hooks 的人不起作用 (2认同)

Ok *_*his 38

对于单个文件:

pre-commit run --files YOUR_FILENAME
Run Code Online (Sandbox Code Playgroud)


Yic*_*hun 14

就跑git commit。在执行此操作之前您无需添加任何内容,因此最终您会收到消息no changes added to commit

  • 至少对我来说,在这种情况下,它只是对所有提交挂钩显示“已跳过”。(可能取决于您用于预提交挂钩的方法/方式,我们使用名为“pre-commit”的 Python 包) (3认同)
  • 请删除这个答案。它完全忽略了上面一些更有用的答案中提出的所有要点。 (3认同)
  • 我认为@mozzbozz 默认情况下它只会在更改的文件上运行。运行 pre-commit run --all-files 以确认您可以强制执行完整的存储库扫描 (2认同)

jav*_*ett 9

有一个Python包,这可以在这里。根据使用说明文件

如果要手动运行存储库上的所有预提交挂钩,请运行pre-commit run --all-files。要运行单个钩子,请使用pre-commit run <hook_id>

所以pre-commit run --all-files是OP是什么之后。

  • 另一种方法是指定预提交挂钩(在本例中为 pylint)并且需要检查文件:`pre-commit run pylint --files common/main.py` (3认同)
  • 请注意,此预提交不是git预提交。而是一个来自https://pre-commit.com的python软件包,用于安装git pre-commit脚本。但是,python软件包是我在这里寻找的,因此为您推荐。 (2认同)