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

kib*_*zer 19 git

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

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

更新tl; dr:感谢Charles Bailey,答案是检查master并添加以下配置:

receive.denyCurrentBranch = true
Run Code Online (Sandbox Code Playgroud)

CB *_*ley 13

你应该看看样品update称为钩update-paranoidcontribgit的分布的目录.它允许您设置每个分支的ACL,限制允许谁推送到哪些分支.这样您就可以将master更新为仅释放所有者.

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

如果您要推送到非裸中央存储库并且master始终是已检出的分支,那么您只需将配置变量设置receive.denyCurrentBranchtruerefuse.