让git推动无操作

时间:2015-05-30 03:02:28

标签: git

我有一个方便的sbt插件,可以执行一系列软件发布和生命周期管理,其中一项功能就是自动将其提交的内容推送到已配置的上游分支。

不幸的是,上游暂时下跌。我可以稍后推送提交,所以现在,我喜欢我的sbt插件,当它执行git push时,只需要no-op。我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:1)

将遥控器的推送网址更改为"。"

git config remote.origin.pushurl .

然后当真正的人回来时,撤消重定向:

git config --unset remote.origin.pushurl

如果您的分支机构正在跟踪命名不同的上游分支,这将导致问题,在这种情况下只需创建一个nonce回购:

git clone --template '' -s --bare . ../nonce
git config remote.origin.pushurl ../nonce

将隔离命名空间。您可以在完成后删除现时的回购。

答案 1 :(得分:0)

您可以为git命令创建一个简单的包装器,拒绝任何推送。这是一个相当简单的Bash函数。

git () {
    case $1 in
      push)
        echo "git: push disabled" >&2
        return 1 ;;
    esac
    command git "$@"
}

这很粗糙 - 它没有选项解析,所以例如git --verbose push绕过case支票。但是对于你陈述的问题,它可能不需要更复杂。