有没有办法配置git存储库来拒绝'git push

我想知道是否有一种方法可以阻止存储库上的' git push --force '(仅在master分支上)?

假设我有远程git存储库,并执行:

  • ' git push '到'主'。 有用。
  • ' git push --force '到'branch-1'。 有用。
  • ' git push --force '改为'master'。 它被拒绝。
  • 它甚至有可能吗?

    感谢您的任何答案和建议。

    BR,Dawid。


    设置配置变量:

    receive.denyNonFastForwards
    receive.denyDeletes
    

    将阻止任何“强迫”推动在所有分支机构工作。

    如果你想要更精细的预分支控制,那么你将不得不在远程仓库上使用'钩子',可能是'更新'钩子。

    有一个叫做'update-paranoid'的示例更新钩子,可能会在'contrib'文件夹中的git分发中满足你需要的(以及更多)。

    gitweb链接


    我编写了这个快速更新钩子来防止存储库中“dev”分支上的非快进更新(推送):

    #!/bin/sh
    
    REFNAME=$1
    OLDSHA=$2
    NEWSHA=$3
    
    if [ "refs/heads/dev" != $REFNAME ]; then
      exit 0
    fi
    
    MERGEBASE=$(git merge-base $OLDSHA $NEWSHA)
    if [ $OLDSHA = $MERGEBASE ]; then
      exit 0
    fi
    
    echo "Not a fast-forward on branch dev"
    exit 1
    

    Github已经引入了受保护分支的概念!

    它可以在Settings -> Branches -> Protected Branches 。 功能现在适用于所有用户 - 不仅是企业!

    可以为任何分支和任何用户(包括管理员)启用此“保护”。

    更多细节在这里 - https://help.github.com/articles/defining-the-mergeability-of-pull-requests/

    因此不再需要钩子和任意代码。

    链接地址: http://www.djcxy.com/p/49231.html

    上一篇: Is there a way to configure git repository to reject 'git push

    下一篇: can't push to branch after rebase