我可以在git中强制执行仅合并分支吗?

Dou*_*oug 19 git merge workflow branch git-branch

我正在使用git,我正在设置以下分支来支持我的工作流程:

  • 发布,仅包含已发布的软件,
  • 测试,包含发布给测试组的软件,
  • 发展,这是发展的地方,
  • some_topic_branch,其中添加了功能等.

主题分支从分支开始并合并到开发中.当我们准备好发布测试版时,测试会在开发中进行合并.当测试版本被批准用于生产时,在测试中发布合并.

这很容易设置,但我想知道git中的执行选项.例如,是否可以强制执行一个策略,其中发布分支上的唯一提交是从测试合并,防止更改直接在发布分支上发生?

ral*_*nja 11

好吧,有点.但我不认为你想去那里.

正如杰森所说,有一些钩子可以用来防止某些行为.在这种情况下,我们可以使用pre commit hook来阻止任何人运行"git commit".但这在几个方面存在问题:

  1. 出于各种安全原因,git钩子不随存储库一起分发,因此您无法强迫人们在其存储库中使用您的钩子.请记住,他们的存储库是他们自己的,不是由你来决定他们在他们的存储库中做了什么.
  2. 当您进行拉动或合并并发生冲突时会发生什么?为了解决这些冲突,你必须能够使用我们刚刚禁用的"git commit".

这只会产生比解决的问题更多的问题.

但是,您可以通过其他方式解决此问题.您可以创建一个强制执行这些原则的工作流程.例如,假设您有人A负责从测试分支到发布分支的合并.如果你只让这个人能够将更改发送到中央存储库(或个人资源库是在"中央"资料库),他/她可以拉从测试库的测试分支,或测试分支的变化测试员B(用你的想象力).

这里重要的是要意识到您可以通过设计彼此之间的变更沟通来实施策略.不是每个人都需要能够将他们的更改推送到一个存储库.哎呀,他们根本不需要推动他们的改变.测试人/人可以拉从开发商的变化,只要他们想要的东西进行测试,这样一来,你可以让测试决定当他们准备在新的变化去拉,不能让开发商决定当测试人员应该得到他们东西.同样的原则.