禁止在git中远程推送到master分支

时间:2010-01-11 22:11:07

标签: git

有没有办法修改中央存储库的配置以禁止任何远程推送到主分支(使用git)?它只会通过发布所有者的分支合并进行更新。

有可能在儿童存储库中进行,但不幸的是,它并不总是万无一失,很容易忘记在新机器上执行 - 无法防止意外推送。开发人员应该能够从任何分支拉出并推回到任何分支,master除外,我们希望将其视为只读。 git可以吗?或者我们正在尝试错误的工作流程。

更新tl;博士:感谢Charles Bailey,答案是检查主人并添加以下配置:

receive.denyCurrentBranch = true

1 个答案:

答案 0 :(得分:13)

您应该查看git发行版的update目录中名为update-paranoid的示例contrib挂钩。它允许您设置每个分支的ACL,限制允许谁推送到哪些分支。这样您就可以将master更新为仅发布所有者。

我不太确定你的意思是“只通过分支合并更新”。我假设您的中央存储库是裸的,在这种情况下,分支通常只通过推送更新。在推送合并提交和不合并提交之间git没有概念上的区别我不确定你的限制主数据更新类型的标准是什么。

如果您要推送到非裸中央存储库并且master始终是已签出的分支,那么您只需将配置变量receive.denyCurrentBranch设置为true或{ {1}}。