多分支模型

时间:2016-01-12 13:32:27

标签: git branching-and-merging

目前我有一个关于我应该使用的分支模型的任务。 现在我有主分支机构,我不时分支发布分支机构,以发布有关新功能的分支机构。这就是它现在看起来我的分支模型。

master
|
|---- release 1.0 branch
|   |
|   |
|   |
|   |----- *(1) needed branch
|   |    |
|   |    |
|   |    |
|   |    |
|----    |
|---------
|
|---- release 1.1
|   |
|   |----- needed branch
|   |    |
|   |    |
|   |
  

*(1) - 每次发布分支都关闭功能我创建新的功能分支,然后在下一个之前合并("所需的分支")   释放。

可能会出现几个问题。

我会在给出问题时对此进行编辑,以便我可以在帖子中给出答案

  1. 如果您需要更多功能,为什么要关闭发布分支? - 事情是我需要在开发之后的任何时候有稳定的分支(发布)" over"。
  2. 我想要完成什么?

    这个分支模型的问题在于我可能有很多功能,每个功能都适用于不同的客户端,许多客户不希望再等待一到两周,直到下一次部署。我正在考虑为每个客户创建分支并在那里推送功能,每当客户想要获得给定功能时,我可以从那里部署,而不会影响其他客户端。因为现在这是不可能的。但这是非常糟糕的方法,因为随着客户的增长,分支机构也会成长。

    我想要更优雅的方法。我知道评论中会有很多问题,所以请问他们,看看我是否可以回答这些问题并提出解决方案,或者至少提出一个想法。

1 个答案:

答案 0 :(得分:2)

听起来你的问题不是Git:你的问题是人。由于这些人付钱给你,大概这似乎是正确的问题!

我要做的是:

|
* tag:r1
|\______________________
|   \             \     \
|    * feature1   WIP2  WIP3
| __/              |
|/                 |
* tag:r2           * feature2
| ________________/
|/
* tag:r3
|
master

总之,我会从master完成我的所有发布,以及我在功能分支上的所有工作。当某个功能完成,经过测试,客户端需要它时,我才会合并到master,重新测试并再次发布。通过这种方式,master永远不会处于开发状态;它总是“刚刚发布”,或“即将发布”(或闲置)。

如果WIP3(“正在进行中的工作3”)需要很长时间才能开发,那么图表就会像这样发展:

|
* tag:r1
|\__________
|           \
|           WIP3
* tag:r2     |
|\__________ |
|           \|
|            * merge
* tag:r3     |
|\__________ |
|           \|
|            * merge
|            |
|            * feature3
| __________/
|/
* tag:r4
|
master

(我已删除了feature1feature2分支,现在它们已合并,但您仍然可以看到历史记录中的多条路径。)

如果你发现客户想要一个旧版本的bug修复版本(也许他们支付了支持,但没有支付新功能?),那么你总是可以从一个标签创建一个发布分支:

|
* tag:r1
|
* tag:r2
|\_________
* tag:r3   \
|          * bugfix
* tag:r4   |
|          * tag:r2.1
master     |
           release2.x_branch