跳过Git提交钩子

Ben*_*Ben 421 git githooks git-commit

我正在寻找一个git钩子,它在Python代码中查找print语句.如果找到print语句,则会阻止git commit.

我想覆盖这个钩子,我被告知有一个命令可以这样做.我找不到它.有什么想法吗?

Von*_*onC 735

也许(来自git commit手册页):

git commit --no-verify

-n  
--no-verify
Run Code Online (Sandbox Code Playgroud)

此选项绕过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 gitsterHamano合并- -提交c3e034f,2017年8月23日)

commit:如果没有pre-commit挂钩,则跳过丢弃索引

" git commit"用于丢弃索引并从文件系统重新读取,以防pre-commit钩子在中间更新它; 当我们知道我们没有运行pre-commit钩子时,这已经被优化了.

  • 对于cherry-pick,请参阅http://web-dev.wirt.us/info/git-drupal/git-continue-vs-no-verify (2认同)

Fra*_*pez 53

--no-verify有效,但就我而言,我不想一直将参数放在终端上。所以我选择了更具侵略性的东西。

如果您想git hooks全局禁用,您可以尝试运行以下命令:

git config --global core.hooksPath /dev/null
Run Code Online (Sandbox Code Playgroud)

但是,如果您想保持原来的状态,只需在终端中运行以下命令:

git config --global --unset core.hooksPath
Run Code Online (Sandbox Code Playgroud)

如果您不希望它是全局的,只需删除该参数:--global

我用 Git 2.16.3 进行了测试。

  • 谢谢弗朗西斯科!奇迹般有效!我最终将以下别名添加到我的 `$HOME/.gitconfig` -> `disable-hooks = config core.hooksPath /dev/null` 和 `enable-hooks = config --unset core.hooksPath` 中。 (2认同)

小智 27

例如, -n--no-verify对于“git merge --continue”之后的提交不起作用。

这是另一个更粗略的想法。

  1. 只需用符号“#”注释文件中的行即可。 .git/hooks/pre-commit
  2. 运行单个或多个命令
  3. 取消注释
  4. 利润。


Chr*_*rle 21

来自man githooks:

预提交
此挂钩由git commit调用,可以使用--no-verify选项绕过.它不需要参数,并在获取建议的提交日志消息和进行提交之前被调用.从此脚本退出非零状态会导致git commit中止.

  • 最佳答案 男人 (2认同)

Mou*_*mit 21

对于那些very beginners花了几个小时进行此提交(使用commentno verify)而没有进一步问题的人

git commit -m "Some comments" --no-verify
Run Code Online (Sandbox Code Playgroud)

  • @Moumit 该命令工作正常。您可能需要重新表述该句子,因为这有点令人困惑。 (2认同)

Mik*_*ons 16

由于某种原因,--no-verify这个特定的钩子对我不起作用:prepare-commit-msg

如果您也遇到此问题,请尝试:

SKIP=prepare-commit-msg git commit
Run Code Online (Sandbox Code Playgroud)

  • @Jasha:这不是 Git 标准的东西。 (3认同)