使用GitFlow

时间:2016-05-10 13:32:31

标签: git git-flow

所以目前我们正在组建一个团队,并使用Gi​​tFlow作为我们在Git中的版本控制工作流程。我们在每周进行生产部署的迭代中工作,包含由QA测试并由产品所有者接受的所有票证。这意味着我们可能已经部署了20张测试票,15张票通过了QA并将被添加到该版本中。发送回开发人员的5张票可能不包含在发行版中。

在我们的版本控制中,我们有以下分支:

  • 功能/ * - 处理特定故障单的开发人员将提交并推送更改,直到他们完成故障单的工作。这个分支是基于开发分支创建的,并定期从开发中获取变化以跟上其他开发人员。
  • 开发 - 对于此分支,开发人员合并在功能分支中完成的更改。此外,我们的CI环境会监听此分支,以构建最新的开发版本并将其部署到测试环境。
  • release / x.x - 此分支用于准备新版本以交付给产品所有者/ UAT。这是我们的问题。因为我们无法将所有门票发布到生产中,所以我们无法合并从开发到此分支的所有内容。因此,目前我们手动挑选所有东西,这真是太可怕了,因为一切都变得井井有条,并伴随着很多冲突。同时融合开发中的所有内容,但还原那些无法上线的门票似乎不是一个可持续的解决方案。
  • master - 应用程序的稳定版本。

我最初的想法是基于主分支创建功能分支,但这意味着开发人员总是在应用程序的旧版本上进行开发。这再次可能导致过程中的集成问题。

我想我不是唯一有这个问题的人。您对此问题的体验是什么?

1 个答案:

答案 0 :(得分:2)

我非常喜欢本文中介绍的git工作流程:“http://nvie.com/posts/a-successful-git-branching-model/

这是他们建议创建/合并功能分支的方式:

  

创建功能分支

     

开始处理新功能时,从开发分支出来   分支。

     

$ git checkout -b myfeature develop

     

切换到新的分支“myfeature”

     

将完成的功能纳入开发

     

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

     

$ git checkout develop

     

切换到分支'develop'

     

$ git merge --no-ff myfeature

     

更新ea1b82a..05e9557(更改摘要)

     

$ git branch -d myfeature

     

删除了分支myfeature(是05e9557)。

     

$ git push origin develop

     

--no-ff标志使合并始终创建一个   新的提交对象,即使可以使用a执行合并   快进。这可以避免丢失有关历史的信息   存在一个功能分支并将所有提交组合在一起   一起添加了这个功能。