嗯,有点。但我不认为你想去那里。
正如 Jason 所说,您可以使用一些钩子来防止某些行为。在这种情况下,我们可以使用 pre commit hook 来阻止任何人运行“git commit”。但这在几个方面存在问题:
- 出于各种安全原因,git hooks 不与存储库一起分发,所以你不能强迫人们在他们的存储库中使用你的 hooks。请记住,他们的存储库是他们自己的,而不是由您决定他们在存储库中做什么。
- 当您进行拉取或合并并发生冲突时会发生什么?为了解决这些冲突,您必须能够使用我们刚刚禁用的“git commit”。
这只会产生比它解决的问题更多的问题。
但是,您可以通过其他方式解决此问题。您可以创建一个执行这些原则的工作流。例如,假设您有人员 A 负责将测试分支合并到发布分支。如果您只让这个人能够将更改推送到中央存储库(或者那个人的存储库是“中央”存储库),他/她可以从测试存储库的测试分支或测试员 B(发挥你的想象力)。
这里重要的是要认识到,您可以通过设计相互交流更改的方式来实施策略。不是每个人都需要能够将他们的更改推送到一个存储库。哎呀,他们甚至根本不需要推动他们的改变。测试人员/人员可以从开发人员那里拉取更改,只要他们想要测试一些东西,这样您就可以让测试决定他们何时准备好拉入新的更改,而不是让开发人员决定测试人员何时应该得到他们的东西。同样的原理。