不允许git合并到同一上游分支

不允许git合并到同一上游分支,git,merge,Git,Merge,有没有办法让git回购拒绝将分支的合并提交推送到同一分支的上游版本的尝试?基本上,我希望通过以下一般形式的合并来避免污染历史: 将远程服务器的分支“X”合并到X中 因此,开发人员可能需要拉--rebase或手动隐藏拉-弹出-隐藏-提交-推送(如所述),其他合并类型(如“将分支“X”合并到Y”)仍应被允许。您可以使用服务器端尝试实现这一点 repo/.git/hooks目录中的存储库中有一些示例钩子 您可以在这里看到一个解析提交消息的示例钩子 请注意,您尝试执行的操作中存在一些问题,但我个人从未提

有没有办法让git回购拒绝将分支的合并提交推送到同一分支的上游版本的尝试?基本上,我希望通过以下一般形式的合并来避免污染历史:

将远程服务器的分支“X”合并到X中


因此,开发人员可能需要拉--rebase或手动隐藏拉-弹出-隐藏-提交-推送(如所述),其他合并类型(如“将分支“X”合并到Y”)仍应被允许。

您可以使用服务器端尝试实现这一点

repo/.git/hooks目录中的存储库中有一些示例钩子

您可以在这里看到一个解析提交消息的示例钩子

请注意,您尝试执行的操作中存在一些问题,但我个人从未提出过适用于所有情况的解决方案

设想开发人员A进行“真实”合并,并将分支X合并到Y

然而,当他们去推进时,他们会因为非快进而被拒绝。此时,您是否让他们尝试使用
git-rebase-p
(这可能会有问题),或者您是否指示他们启用
git-reere
,并抛出合并并重做?这两种解决方案都不如只进行
git合并
(通常)那么简单

我很幸运地强迫用户使用
git config--global pull.rebase true
(或者更好,以某种方式为他们自动设置),这将确保他们是在重新设置基址,而不是合并。一旦你有了它,你就不需要担心提交钩子了