我想知道有没有一种方法可以防止在仓库上出现'git push --force'(只在主分支上)?假设我有一个远程git仓库,并执行以下操作:
git push --force
git push
这可能吗
laximzn51#
设置配置变量:
receive.denyNonFastForwards receive.denyDeletes
将防止任何“强制”推送在所有分支上工作。如果你想要更好的分支前控制,那么你将不得不在远程仓库上使用一个“钩子”,可能是“更新”钩子。有一个名为'update-paranoid'的示例更新钩子,它可能会在'contrib'文件夹中的git发行版中完成您需要的(以及更多)。gitweb link
gab6jxml2#
Github已经引入了受保护分支的概念!
它可以在Settings -> Branches -> Protected Branches下找到。该功能现在适用于所有用户-而不仅仅是企业!这种“保护”可以为任何分支和任何用户(包括管理员)启用。更多详情-https://help.github.com/articles/defining-the-mergeability-of-pull-requests/因此不再需要钩子和任意代码。
Settings -> Branches -> Protected Branches
2skhul333#
我写了这个快速更新钩子来防止在仓库的“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
3条答案
按热度按时间laximzn51#
设置配置变量:
将防止任何“强制”推送在所有分支上工作。
如果你想要更好的分支前控制,那么你将不得不在远程仓库上使用一个“钩子”,可能是“更新”钩子。
有一个名为'update-paranoid'的示例更新钩子,它可能会在'contrib'文件夹中的git发行版中完成您需要的(以及更多)。
gitweb link
gab6jxml2#
Github已经引入了受保护分支的概念!
它可以在
Settings -> Branches -> Protected Branches
下找到。该功能现在适用于所有用户-而不仅仅是企业!这种“保护”可以为任何分支和任何用户(包括管理员)启用。
更多详情-https://help.github.com/articles/defining-the-mergeability-of-pull-requests/
因此不再需要钩子和任意代码。
2skhul333#
我写了这个快速更新钩子来防止在仓库的“dev”分支上进行非快进更新(推送):