Jer*_*emy 6 pre-commit pre-commit-hook githooks
是否有办法准确指定git-hook使用时要跳过哪些内容--no-verify?--no-verify或者除了完成此任务之外还有其他标志吗?也许只是一个只能跳过的标志pre-commit?
我有两个经常使用的钩子,pre-commit和commit-msg。pre-commit运行我的 linting、流程检查和一些单元测试。commit-msg将我的分支名称附加到提交消息的末尾。
有时我很想跑,--no-verify但pre-commit还是想跑commit-msg。
似乎有很多与此类似的 SO 帖子,但没有什么比选择性跳过--no-verify.
如果您能够修改钩子,则可以为每个钩子添加一个切换开关。
特定验证切换的示例pre-commit.sample:
# If you want to allow non-ASCII filenames set this variable to true.
allownonascii=$(git config --bool hooks.allownonascii)
Run Code Online (Sandbox Code Playgroud)
因此,为了能够切换整个pre-commit hook,可以将其添加到它的开头:
enabled="$(git config --bool hooks.pre-commit.enabled)"
if test "$enabled" != true
then
echo 'Warning: Skipping pre-commit hook...'
exit
fi
Run Code Online (Sandbox Code Playgroud)
使用示例:
git -c hook.pre-commit.enabled=false commit
Run Code Online (Sandbox Code Playgroud)
注意:两种类型的别名都会中断 制表符补全。
Agit alias可以简化这个:
git config --global alias.noprecommit \
'!git -c hook.pre-commit.enabled=false'
Run Code Online (Sandbox Code Playgroud)
这样,您可以通过以下调用提交并跳过挂钩:
git noprecommit commit
Run Code Online (Sandbox Code Playgroud)
您还可以使用shellalias(例如~/.bashrc:):
alias gitnoprecommit='git -c hook.pre-commit.enabled=false'
Run Code Online (Sandbox Code Playgroud)
使用示例:
gitnoprecommit commit
Run Code Online (Sandbox Code Playgroud)
小智 7
如果您想提交并绕过单个预提交挂钩,请使用 \xc2\xa0
\n\n\nSKIP=hook_name git commit -m "commit_message"
\n
SKIP 环境变量是一个逗号分隔的钩子 ID 列表。这允许您跳过单个挂钩,而不是 --no-verifying 整个提交。
\n\n\nSKIP=flake8,mypy git commit -m "commit_message"
\n
| 归档时间: |
|
| 查看次数: |
8686 次 |
| 最近记录: |