我有一个我喜欢的post-checkout钩子 - 大部分时间 - 但我不时地知道运行它会浪费时间,或者,因为它丢弃并重建我的开发数据库,我不想要它做的事情.
是否有跳过钩子的git选项?如此公平,我已经找到了一个.
Ant*_*ile 16
core.hooksPath您可以通过强制成为不存在的路径(通过-c)从命令行执行此操作
例如:
$ cat .git/hooks/post-checkout
#!/usr/bin/env bash
echo 'nope'
exit 1
$ git checkout -- .
nope
$ git -c core.hooksPath=/dev/null checkout -- .
$
Run Code Online (Sandbox Code Playgroud)
我不认为有一个命令行选项来做你想要的,但你可以通过使用环境变量作为标志来平凡地解决这个问题.在您的post-checkout脚本中,从以下开始:
#!/bin/sh
[ "$SKIP_POST_CHECKOUT" = 1 ] && exit 0
Run Code Online (Sandbox Code Playgroud)
然后当你想跳过post-checkout脚本时:
SKIP_POST_CHECKOUT=1 git pull
Run Code Online (Sandbox Code Playgroud)
等等.
如果输入的内容太多,你总是可以缩短你的变量名.:)
我刚刚找到了另一个答案。只需将该-c core.hooksPath=/dev/null选项添加到您的 git 命令中即可。这将覆盖仅一个命令的配置,并禁用所有挂钩。例如:
git -c core.hooksPath=/dev/null checkout master
git -c core.hooksPath=/dev/null pull
git -c core.hooksPath=/dev/null commit ...
git -c core.hooksPath=/dev/null push
Run Code Online (Sandbox Code Playgroud)