目前我有一个关于我应该使用的分支模型的任务。 现在我有主分支机构,我不时分支发布分支机构,以发布有关新功能的分支机构。这就是它现在看起来我的分支模型。
master
|
|---- release 1.0 branch
| |
| |
| |
| |----- *(1) needed branch
| | |
| | |
| | |
| | |
|---- |
|---------
|
|---- release 1.1
| |
| |----- needed branch
| | |
| | |
| |
*(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
(我已删除了feature1
和feature2
分支,现在它们已合并,但您仍然可以看到历史记录中的多条路径。)
如果你发现客户想要一个旧版本的bug修复版本(也许他们支付了支持,但没有支付新功能?),那么你总是可以从一个标签创建一个发布分支:
|
* tag:r1
|
* tag:r2
|\_________
* tag:r3 \
| * bugfix
* tag:r4 |
| * tag:r2.1
master |
release2.x_branch