2

我们最近开始介绍 gitflow,主要关注一些 youtube 视频和一些在线文章 - 以及 SourceTree 中的 GUI 功能。

然而,我们认为我们做错了什么,因为我们遇到了我们希望解决的情况。

developer 1正在处理feature 1developer 2正在处理feature 2develop分支用于开发和暂存,master分支正在运行/生产

开发商 1

  1. 开发 = 主控(与主控同步)
  2. 开发 -> 分支到 feature-1
  3. 开发 <- 合并到 feature-1

开发商 2

  1. 开发!= master(与master不同步)
  2. 开发 -> 分支功能 2
  3. 开发 <- 合并 feature-2

现在我们来解决问题,如果developer 2feature 2通过将其合并到 live 中master- 它将包含feature 1,这意味着它们都会上线。

所以我们显然做错了什么——这就是我们需要澄清的地方,我能想到的唯一两种方法是

  • master您从而不是创建新功能develop
  • 您使用“Cherry Pick”,它只将实际更改的文件放入master

我们想要的解决方案是混合没有发布周期的 Web 开发项目,一旦客户签署了该功能,它们就会真正上线,因此非常感谢有关如何实现这一点的建议。

谢谢

4

2 回答 2

1

好吧,根据 gitflow 文档http://nvie.com/posts/a-successful-git-branching-model/

完成的功能可能会合并到develop分支中,以明确地将它们添加到即将发布的版本中

因此,在下一个版本中 100% 保证之前,开发 1 不应合并feature 1develop如果是这样的话,那么 dev 2 分支出来就没有问题了,包括feature 1. 当feature 1在 中时develop,则应将其视为“完成”,除了错误修复,它不能轻易从develop.

也就是说,我觉得 gitflow 很麻烦,我自己更喜欢http://dymitruk.com/blog/2012/02/05/branch-per-feature/。除了在结构上更简洁之外,它还有一个巨大的好处,即在任何时候都可以轻松地从“下一个版本”中退出功能,并且您面临的“问题”(一个功能隐含地带来另一个功能)不会发生.

于 2016-08-17T14:35:54.697 回答
1

当开发人员 1 将功能 1 合并回开发时,它应该已经准备好生产。

因此,一起实现功能 2 和功能 1 应该没有问题。

但是你在这里有几个选择。

  1. 暂时不要完成功能 1(如果尚未准备好生产,请不要将其合并回develop)。
  2. 更频繁地发布(首先发布功能 1,一旦完成就立即发布)。
  3. 使用功能切换(具有属性feature1.enabled=false)并释放功能 1 和功能 2,尽管该功能已禁用。

请记住,在 下git flow,发布总是从develop分支制作的,所以理想情况下,您应该能够在develop任何时候使用生产就绪代码进行发布。

于 2016-08-18T08:00:49.103 回答