我正在查看一个 git 钩子,它在 Python 代码中查找打印语句。如果找到打印语句,它会阻止 git 提交。
我想覆盖这个钩子,我被告知有一个命令可以这样做。我一直没能找到它。有什么想法吗?
我正在查看一个 git 钩子,它在 Python 代码中查找打印语句。如果找到打印语句,它会阻止 git 提交。
我想覆盖这个钩子,我被告知有一个命令可以这样做。我一直没能找到它。有什么想法吗?
也许(来自git commit
手册页):
git commit --no-verify -m "commit message"
^^^^^^^^^^^
-n
--no-verify
此选项绕过 pre-commit 和 commit-msg 挂钩。另见githooks(5)。
正如Blaise所评论的,-n
对于某些命令可以有不同的角色。
例如,git push -n
实际上是一次试运行。
只会git push --no-verify
跳过钩子。
注意:Git 2.14.x/2.15 改进了 --no-verify 行为:
请参阅Kevin Willford (``)的提交 680ee55(2017 年 8 月 14 日) 。(由Junio C Hamano 合并 -- --在提交 c3e034f中,2017 年 8 月 23 日)
gitster
commit
: 如果没有pre-commit
钩子,跳过丢弃索引
"
git commit
" 用于丢弃索引并从文件系统中重新读取,以防pre-commit
钩子在中间更新它;当我们知道我们不运行pre-commit
钩子时,这已经被优化了。
Davi Lima在评论中指出不git cherry-pick
支持--no-verify。
因此,如果一个cherry-pick 触发了一个预提交钩子,您可能,就像在这篇博文中一样,必须以某种方式评论/禁用该钩子,以便您的 git cherry-pick 继续进行。
git rebase --continue
在合并冲突解决之后,如果是 , 则需要相同的过程。
来自man githooks
:
pre-commit
这个钩子由 git commit 调用,可以通过 --no-verify 选项绕过。它不带参数,并在获取建议的提交日志消息并进行提交之前调用。从此脚本中以非零状态退出会导致 git 提交中止。
两者都有comment
,no verify
没有进一步的问题
git commit -m "Some comments" --no-verify
--no-verify
有效,但就我而言,我不想一直将参数放在终端上。所以我选择了更具侵略性的东西。
如果要git hooks
全局禁用,可以尝试运行以下命令:
git config --global core.hooksPath /dev/null
但是,如果您想保持原来的状态,只需在终端中运行以下命令:
git config --global --unset core.hooksPath
如果您不希望它是全局的,只需删除参数:--global
我希望它对某人有用,我用 git 2.16.3 测试过
例如,-n 或 --no-verify 不适用于“git merge --continue”之后的提交。
所以另一个更粗略的想法。
.git/hooks/pre-commit
出于某种原因,--no-verify
这个特定的钩子对我不起作用:prepare-commit-msg
如果您也遇到此问题,请尝试:
SKIP=prepare-commit-msg git commit