0

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

经过研究,我发现我可以采取的唯一措施不仅是从项目的当前版本中删除该提交,而且从它的整个历史中删除(如果我要从这个膨胀中拯救项目,我必须这样做) 涉及强制推动。

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

当然——我不相信有问题的人会滥用这样的功能。我想这并非不可能,因为没有人的行为可以 100% 预测——但我相当有信心,这不太可能。然而,随着时间的推移,我走得越远,我就越有可能犯错误,相信有人误用这样的功能——所以我认为最好现在就知道危险有多大——如果危险真实的,我可以采取什么预防措施。

4

1 回答 1

0

强制推送是只有 GitHub 项目的管理员/所有者才能执行的操作,还是任何被授权为贡献者的人都可以执行的操作?

免费和付费的 GitHub 帐户

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

付费的GitHub-Enterprise帐户可以让您更好地控制强制推送:使用这样的帐户,您可以指定允许哪些协作者强制推送到哪些存储库中的哪些分支

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

如果您和您的合作者打算使用免费帐户,我认为您的做法是错误的:您应该摆脱当前使用的集中式工作流程,

在此处输入图像描述

并采用集成管理器工作流程

在此处输入图像描述

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

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

如果您使用集成管理器工作流程(或更复杂的独裁者和副手工作流程),您将不再互相踩踏。

(图表取自Pro Git 书,第 5 章 - 分布式 Git。)

于 2014-09-27T16:12:58.803 回答