2014-09-01 74 views
0

我们有一个项目,有多个开发人员。每个开发人员都有自己的功能分支,一旦功能完成,它将与主合并并推送到远程存储库。问题出现了:为多个开发人员使用git分支

  1. 如果有几个人正在使用功能,他们都推送他们的更改并且其中一个功能有问题。有没有办法将所有功能都推送到远程的次要主站,运行测试,如果一切顺利,推送到远程主站?

  2. 可以说所有的开发人员都在研究他们的功能,并且出现了一个紧急修复程序,那么最好如何处理?一些开发者可能已经推出了,但我们只想推动紧急修复?

+0

而不是每个开发者都有自己的分支,可以考虑让他们在自己的回购库中完成所有的准备工作,然而他们希望这样做,然后清理历史以便发布并自行合并到公共测试分支和主人一旦通过就会被快速转发。开发人员最了解他们自己的代码,并且通常可以轻松地完成rebase,并且毫无理由地在生产过程中产生混乱的历史。即使你不想纯粹的线性,我认为最好是私下完成wip提交,依靠合作来保持任何重叠的私人工作同步。 – jthill 2014-09-01 18:58:42

回答

4

广告1.是的,这是可能的。如果您愿意的话,只需在远程回购中创建另一个分支作为“次要主数据”即可。您可以随便命名,例如devel

广告2.我们的团队有一个分支,名称为,生产,它应该与生产服务器上运行的服务器以及我们正在部署的服务器完全相同。所以当我们需要应用修补程序时,我们不必担心主人的当前状态 - 我们只是将其应用于生产

我建议阅读这一点,至少灵感:A successful Git branching model

+0

伟大的链接! +1,对于有一些“最佳实践”非常有用! – 2014-09-01 20:15:04

+0

谢谢你的链接。所以在你建议的模型中有一个问题,拥有一个二级主人意味着很多人推动功能,有些人可能是越野车,如果人们不恢复他们可以留下的提交......很多混乱的情况可以因为它需要不断的协调和沟通。我该如何解决这个问题? – Mark 2014-09-01 20:37:06

+0

@Mark我恐怕我没有完全理解你的问题。通常,_master_保留为最新的但稳定的代码库版本。任何可能会将_master_带入非稳定状态的开发将在其自己的功能分支中完成。完成后或者达到某种稳定性时,可以合并为主。此外,master还会不时将其合并到此功能分支,以便随时更新其他更改。 – Messa 2014-09-04 08:57:35

1

这些都是容易做到饭桶。这个想法是这样的:

  • 一个master分支,它是“稳定”
  • 一个staging分支跟踪掌握和获取功能合并第一:这是最后的测试已经完成。
  • 许多功能分支。

如果一个紧急补丁是在主完成,这可以通过多种方式来处理:

  • 樱桃挑提交给每个特性分支。您也可以将修补程序应用到其他分支并从那里选择樱桃。樱桃采摘是非常本地化的,并且可以跨越任何分支(原则上)。
  • 将主设备合并到功能分支中,包括任何“上游”更改一次性
  • 将功能分支重新绑定到主设备上。这基本上是上一个项目,主要区别在于:一个rebase将回滚并重放所有分支的提交到master的顶端,所以当分支在重新绑定之后合并时,它将具有非常线性的实现历史记录,并且所有分支的提交进入连续系列。