任何项目贡献者都可以对GitHub进行强制推送 - 或者只对管理员进行强制推送吗?

时间:2014-09-25 18:08:07

标签: git github revision-history

在我管理的GitHub项目中,有人犯了错误(由于在方向上的错误沟通)向项目添加了一个非常大的音频文件 - 导致项目(不到一个月的时间)一个膨胀的存储库 - 具有一定程度的膨胀,可以与已经存在更长时间并覆盖更广范围的项目相媲美。

经过研究,我发现我可以采取的唯一行动就是不仅从项目的当前版本中删除该提交,而且从它的整个历史中删除(如果我是这样的话,我将不得不这样做)从这个臃肿中拯救这个项目)涉及一个推力。

我的问题是 - 强制推送只有GitHub项目的管理员/所有者可以执行的操作,或者任何有权作为贡献者授权的操作?如果是这样,我可以采取任何预防措施来防止滥用此类功能(即由任何人其他使用而不是项目管理员),同时仍允许其正确使用(即由项目管理员使用) )?

当然 - 我不相信有问题的人会误用这样的功能。我认为这并非不可能,因为无人行动可以100%预测 - 但我相信它不太可能。然而,随着时间的推移,我走得越远,我就越有可能会错误地相信那些误用这样一个功能的人 - 所以我认为现在最好知道危险是多少 - 如果 的危险是真的,我可以采取什么预防措施。

1 个答案:

答案 0 :(得分:0)

  

强制推送只有GitHub项目的管理员/所有者可以执行的操作,或者任何有权作为贡献者授权的操作吗?

免费和付费的GitHub帐户

您的问题的答案取决于您正在使用的GitHub帐户的类型。您在your comment中写道,您正在使用免费帐户。这样的帐户不允许你太多控制;它甚至不允许您设置receive.denyNonFastFowards开关以禁止所有强制推送;虽然,apparently,如果您向他们发送电子邮件,GitHub的工作人员会为您设置。

付费的GitHub-Enterprise帐户会为您提供finer control over force pushes:使用此类帐户,您可以指定允许哪些协作者强行推送到哪些分支机构中的存储库

如果您不愿意切换到付费帐户......

如果您和您的协作者开始使用免费帐户,我认为您的解决方法是错误的:您应该远离正在使用的centralized workflow

enter image description here

并采用Integration-Manager workflow

enter image description here

在此工作流程中,不是拥有一个所有协作者都可以推送到的规范存储库,

  • 每个协作者都有自己的公共存储库(或 fork ),只有他/她可以(强制)推送到;
  • 一些值得信赖的协作者(在他的场景中),负责将贡献者的更改集成到祝福/规范的存储库中。

如果您使用Integration-Manager workflow(或更复杂的Dictator-and-lieutenants workflow),您将不再踩到对方的脚趾。

(图表取自Pro Git book, chapter 5 - Distributed Git。)