有没有办法configurationgit存储库来拒绝'git push –force'?

我想知道是否有一种方法来防止“ git push --force ”在存储库(只在主分支)?

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

  • ' git push '。 有用。
  • ' git push --force '到'branch-1'。 有用。
  • ' git push --force '改为'master'。 它被拒绝。

这甚至有可能吗?

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

BR,Dawid。

设置configurationvariables:

 receive.denyNonFastForwards receive.denyDeletes 

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

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

有一个叫做'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