指定在 git commit --no-verify 上跳过哪个钩子

2024-03-14

如果有办法准确指定哪个git-hook使用时跳过--no-verify?或者除了--no-verify来完成这个?也许只是一个只能跳过的标志pre-commit?

我有两个经常使用的钩子,pre-commit and commit-msg. pre-commit运行我的 linting、流程检查和一些单元测试。commit-msg将我的分支名称附加到提交消息的末尾。

有时我想--no-verify the pre-commit但仍然想拥有commit-msg run.

似乎有很多与此类似的帖子,但没有什么比选择性跳过更合适的了--no-verify.


Skipping

如果您能够修改hooks,您可以为每个添加一个切换开关。

特定验证切换的示例pre-commit.sample https://git.kernel.org/pub/scm/git/git.git/tree/templates/hooks--pre-commit.sample:

# If you want to allow non-ASCII filenames set this variable to true.
allownonascii=$(git config --bool hooks.allownonascii)

所以要启用切换整个pre-commit hook,这可以添加到 它的开头:

enabled="$(git config --bool hooks.pre-commit.enabled)"

if test "$enabled" != true
then
    echo 'Warning: Skipping pre-commit hook...'
    exit
fi

使用示例:

git -c hook.pre-commit.enabled=false commit

Aliasing

Note: 两种类型的别名break https://stackoverflow.com/questions/342969/how-do-i-get-bash-completion-to-work-with-aliases 制表符补全.

A git alias https://git-scm.com/book/en/v2/Git-Basics-Git-Aliases可以简化这个:

git config --global alias.noprecommit \
  '!git -c hook.pre-commit.enabled=false'

这样,您就可以提交并跳过hook通过以下调用:

git noprecommit commit

您还可以使用shell alias http://pubs.opengroup.org/onlinepubs/9699919799/utilities/alias.html(例如:~/.bashrc):

alias gitnoprecommit='git -c hook.pre-commit.enabled=false'

使用示例:

gitnoprecommit commit
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

指定在 git commit --no-verify 上跳过哪个钩子 的相关文章

  • 如何在 GitLab 的服务器端添加预接收钩子?

    我试图限制在我们的 gitlab 中提交的二进制文件 EXE DLL PDF 所以我需要添加钩子来将其限制在全局范围内 我怎样才能做到这一点 Pre receive hook 适合这个吗 这个地方添加钩子是否正确 opt gitlab em
  • 在 Git 中编写一个预推送挂钩来 grep 正则表达式的所有文件,如果未找到正则表达式,则希望拒绝推送

    我有以下预推钩 理想情况下 我希望它遍历所有推送到我的存储库的文件 如果任何文件的内容与顶部定义的正则表达式不匹配 则拒绝推送 尝试循环访问文件时出现以下错误 未定义方法 each for String NoMethodError each
  • 有没有办法检查 git 标签是否与相应提交的内容匹配?

    在我工作的公司中 有些项目有project info文件包含程序 库 其他内容的当前版本 实际上 当有人想要标记一个版本时 他必须首先确保project info文件 已版本化 是最新的 并且包含与他要创建的标签名称相同的版本 不用说这很容
  • 使用 git 在 Windows 上管理网站

    我有一个在 Windows 2008 服务器上运行的网站 我想知道使用 git 管理该网站的最佳方法是什么 理想情况下 我想要使用 post receive hook 或类似的工具进行自动化部署 我确实有一个 Linux 服务器 通常用作我
  • git 网站更新策略 - 如何同步开发和实时存储库?

    以下是我构建 git 支持的网站更新和备份策略的方式 我可以通过 SSH 访问托管该网站的 Linux VPS 这是我所做的 1 在网站服务器上 在正确的网站文件夹 公共根之前的一级 创建了一个 git 存储库 cd path to web
  • 如何在推送时自动结帐?

    考虑以下情况 我有一个 git 存储库 foo git 其中包含 javascript 项目的代码 在这个存储库中有一个分支生产包含由网络服务器提供的代码状态 该服务器从以下位置获取代码 var www foo 该存储库是该项目的主存储库
  • 使用github写一本书[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 使用 Github 我们可以编写格式良好的 README md 文件和文档来展示项目 此外 还有供用户协作的 wiki 页面 我正在思
  • Gerrit 变更合并 Hook

    我使用 git 作为我的版本控制系统 并建立了一个 Gerrit 站点来进行代码审查 我想创建一个钩子来执行以下操作 当管理员单击 提交 按钮时 会生成一个文件 称为版本 txt 应该修改 脚本应该打开该文件 找到以下文本 其中ID可能会更
  • Git 服务器挂钩:获取正在推送的文件的内容?

    我正在尝试在我的团队中强制执行一些编码规则 为此 我编写了许多客户端挂钩 这些挂钩可以正常工作 但现在我希望当开发人员将其修改推送到中央存储库时运行相同的检查 但它们不起作用 这是我想做的 我想逐行遍历推送的文件 检查是否违反编码约定 如果
  • Git合并后挂钩,如何获取合并分支的名称

    我正在尝试创建合并后挂钩脚本 该脚本仅在从特定分支合并时运行 如何确定特定提交的分支更改的名称 e g if from specific branch 1 then git diff name status HEAD 1 HEAD some
  • 使用更新后挂钩在另一个存储库上执行“git pull”时出现“致命:不是 git 存储库:'.'”

    我是 git 新手 所以如果我在这里滥用术语 我深表歉意 并请纠正我 但我会尽力而为 我正在尝试在 Web 服务器上设置一个裸 git 存储库 集线器 和一个开发站点工作副本 主要 我尝试过模仿它本文 http joemaller com
  • Git 添加预提交钩子而不是提交的暂存文件

    我编写了一个预提交挂钩来编译我的项目并将生成的文件添加到提交中 这是一个 JavaScript 项目 我使用的是 husky 但我也尝试过编辑 git hooks pre commit 但该文件没有添加到提交中 如果我取消提交 我可以看到文
  • 如何防止使用 git hook 提交文件 (.json)?

    如何防止使用 git hook 提交文件 json 我有一个 json 文件仍在服务器上 所以我不能使用 gitignore 但现在我不想允许任何人更改此文件 提交它 因为它会破坏某些内容 我想使用本地钩子 我怎样才能获得提交中的特殊文件
  • Bash 确认不会等待用户输入

    我正在尝试使用 bash 脚本实现确认提示 但由于某种原因 提示不会等待用户输入 我尝试过很多例子 但到目前为止还没有运气 如果有什么区别的话我用的是MacOS 只是我尝试过的几个例子 所有复制 粘贴来自SO中的其他答案 bin bash
  • git 中预推送和预接收钩子的区别?

    git 中的预推送和预接收钩子在用例或工作逻辑方面有区别吗 我能理解的唯一区别是他们文档 https github com git git blob master Documentation githooks txt L211就他们收到的输
  • 如何将客户端钩子应用到git中的所有本地存储库?

    我创建了一个 commit msg 钩子myrepo git hooks bin sh message cat 1 c echo message grep c fff if c gt 0 then echo Error exit 1 fi
  • 在某些条件下使用钩子自动将一个分支合并到另一个分支?

    我的 github 存储库中有两个分支 master and dev分支 我有一个需要合并的要求master分支到dev在以下条件下分支 一旦 PR 直接合并到 master 分支 那么我需要自动将 master 分支合并回 dev 分支
  • 如果特定文件发生更改,如何自动收到警告?

    我有一个 php 项目 当我从另一个存储库中提取并且composer lock 文件发生更改时 我应该运行composer phar install dev git 如何自动警告我 询问我是否要运行这个命令 我想某种挂钩可以解决这个问题 但
  • 用于指示存储库已弃用的 Git 挂钩

    我们有一个存储库 托管在 GitLab 实例上 少数项目仍在引用该存储库 但已被弃用 取而代之的是另一个解决方案 有什么方法可以将存储库标记为 已弃用 吗 理想情况下 每个fetch来自此存储库 作为git submodule update
  • 如何仅对暂存内容运行 git 预提交检查?

    Suppose git status给出这个 On branch X Changes to be committed use git reset HEAD

随机推荐