我想强制所有对 master 的提交都来自拉取请求。如果不是通过拉取请求提交,我们不希望直接提交给 master。
有没有办法做到这一点?例如,这可以通过服务器挂钩来实现吗?
你可以 - 见https://help.github.com/articles/about-protected-branches/ 它适用于公共回购,如果你为 GH 付费,也适用于私人回购。
我想,你想要 github 拉取请求的这种行为!由于 github 不提供服务器端钩子,因此您必须在您自己的机器上完成它!
如果您将 github 拉取请求应用于您的存储库,则可能会发生快进。由于您不希望这样,您应该执行以下操作:
--no-ff
这将确保您的主人只有合并,即使可能有快进。之后您可以移除遥控器。
如果您与其他人共享您的存储库(公共写入访问权限),您将无法强制执行此操作。但无论如何,我不会允许其他人访问我的存储库!
如果你想确保没有人能够提交到 master 分支(在存储库的每个 fork/clone 上),你应该编写一个钩子(客户端),它检查分支并在分支是 master 时中止提交。请注意,默认情况下,每个用户都必须自己启用钩子,并且每个用户都可以在不运行钩子的情况下进行提交!