Git:结账没有运行post-checkout hook

时间:2016-02-17 03:02:28

标签: git

我有一个我喜欢的结账后挂钩 - 大部分时间 - 但我不时地知道运行它会浪费时间,或者,因为它丢弃并重建了我的开发数据库,​​所以我不喜欢不希望它做它的事情。

是否有跳过挂钩的git选项?如此公平,我已经找到了一个。

3 个答案:

答案 0 :(得分:6)

我不认为有一个命令行选项可以做你想要的,但是你可以通过使用环境变量作为标志来解决这个问题。在post-checkout脚本中,请以:

开头
#!/bin/sh
[ "$SKIP_POST_CHECKOUT" = 1 ] && exit 0

然后当你想跳过post-checkout脚本时:

SKIP_POST_CHECKOUT=1 git pull

如果键入的内容过多,您可以随时缩短变量名称。)。

答案 1 :(得分:3)

您可以从命令行通过强制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 -- .
$ 

答案 2 :(得分:-1)

我刚刚发现了另一个answer。只需将-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