按分支名称前缀拒绝 git 合并

Reject git merges by branch name prefix

如何配置我的 git 存储库以在当前分支名称具有特定前缀时拒绝所有合并响应?

我想保留我的 master 分支以防止来自具有像 'spike_'.

这样的前缀的峰值解决方案的分支的合并

这里的答案是否和是,具体取决于您未指定的几件事。

考虑提交(合并和非合并一样)如何到达您的存储库:

  • 你可以自己制作;
  • 你可以用 git fetch 把它们带进来;和
  • 您可以通过git push获得它们。

对于第一种情况,您可以编写介于您和 git merge 之间的钩子或前端命令,当然您也可以绕过它们。

对于第二种情况,你可以做的很少(虽然不是完全没有):当你使用 git fetchgit remote update 时,你可以推迟远程跟踪分支更新,或者滚动如果新提交包含这样的合并,它会从您的 reflog 返回。这将保护您的 存储库,但不会影响您从中获取的存储库。

对于最后一种情况,您可以使用预接收或更新挂钩直接保护您的 存储库。在此挂钩中,您将检查对分支标签的建议更改。如果标签具有您想要保护的形式,那么您将扫描在更改被接受时将引入的提交。如果其中任何一个是您希望拒绝的合并,您可以拒绝特定更新(在更新挂钩中)或整个更新集(在预接收挂钩中)。与 fetch 案例一样,这不会影响推送给您的存储库,但如果您和您的合作者使用集中式工作流程并且您是中心,这将阻止他们将此类合并引入他们的同行通过您的(中央)存储库。