优雅的解决方案,以防止强制推动主人

Swi*_*ift 39 git github git-push

我正在试图找出一种防止开发人员用Git推动大师的好方法.我们使用GitHub来托管我们的远程存储库,因此pre-receive钩子不是一个选项.是否可以为开发人员团队轻松实施任何其他解决方案?

作为旁注,我一般不想禁用推力.有时它是必要的邪恶.但是说,推动大师的力量不可能发生.

man*_*lds 52

更新

Github后来引入了受保护分支的概念.它可以在Settings- > Branches- > 下找到Protected Branches

可以为任何分支以及任何用户(包括管理员)启用此"保护".

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

你无法在Github中阻止这种情况.

你可以做的是在你身边有一个中间回购,运行一个预接收挂钩,以防止强制推送和从这个中间仓库推送到github并阻止访问直接推送到github.是的,这并不优雅,你失去了很多Github的功能,但我没有看到任何其他方式.

编辑:刚刚看到这个答案,它说同样的并给出了另一种解决方法:GitHub - 防止协作者使用push -f

  • 在GitHub企业可以:https://enterprise.github.com/help/articles/blocking-force-pushes-for-a-user-account (2认同)
  • [Github 最近为此添加了一个功能!](https://github.com/blog/2051-protected-branches-and-required-status-checks) (2认同)
  • 目前***“受保护的分支仅适用于专业版、团队版和企业版用户”***。 (2认同)

Luk*_*tor 11

GitHub推出了一项名为"受保护的分支"的新功能,以防止推力.您可以在存储库设置>分支中配置它.

github保护分支机构


tri*_*iad 9

我不是github专家,但我相信如果您使用github 组织,您可以这样做.

您需要为不允许掌握的开发人员创建一个组织"Pull Only"团队.他们不会在主要仓库上工作,而是将主仓库分叉,并将其本地仓库设置为与其仓库同步.无论何时他们想将代码推送到主仓库,他们都必须将代码推送到他们的分支并提交Pull Request.

这是您为开发人员创建另一个组织"推拉"团队的地方,可以审查和批准拉取请求,并将它们合并到您的主仓库中.

基本上每个开发人员都只是推动他们自己的分支,没有人可以直接推送到主要的仓库(除了具有推/拉访问权限的团队).为了在主回购上发生推动,它必须始终通过fork repo的pull请求.


Woj*_*ski 5

[更新] Github 现在专门为此目的提供了“受保护的分支”功能。

Easy-peasy:获取 Github“企业”安装,然后按照以下说明操作:https ://help.github.com/enterprise/2.1/admin/articles/blocking-force-pushes-to-a-repository/

免责声明:这是一个开玩笑的答案。请在https://github.com/contact上留言,也许 Github 人员会听到我们的声音,并为大众启用此选项。