为多个开发人员使用git分支

为多个开发人员使用git分支,git,github,Git,Github,我们有一个项目,有多个开发者。每个开发人员都有自己的功能分支,一旦功能完成,它将与master合并并推送到远程存储库。问题出现了: 如果有几个人正在开发功能,他们都在推动他们的更改,而其中一个功能有问题。是否有办法将所有功能推送到远程的辅助主机上,运行测试,如果一切顺利,推送到远程的主机上 假设所有开发人员都在开发他们的功能,并且出现了一个紧急修复程序,那么如何最好地处理这个问题呢?有可能一些开发人员已经推动了,但我们只想推动紧急修复 公元1年。是的,这是可能的。如果您愿意,只需在远程回购中创建

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

  • 如果有几个人正在开发功能,他们都在推动他们的更改,而其中一个功能有问题。是否有办法将所有功能推送到远程的辅助主机上,运行测试,如果一切顺利,推送到远程的主机上

  • 假设所有开发人员都在开发他们的功能,并且出现了一个紧急修复程序,那么如何最好地处理这个问题呢?有可能一些开发人员已经推动了,但我们只想推动紧急修复


  • 公元1年。是的,这是可能的。如果您愿意,只需在远程回购中创建另一个分支作为“辅助主机”。你可以给它取任何你喜欢的名字,例如devel

    公元2年。我们的团队有一个名为production的分支,它应该与生产服务器上运行的和我们部署的完全相同的版本。因此,当我们需要应用修补程序时,我们不必担心master的当前状态——我们只需将其应用于生产


    我建议读这篇文章,至少是为了获得灵感:

    ad1。是的,这是可能的。如果您愿意,只需在远程回购中创建另一个分支作为“辅助主机”。你可以给它取任何你喜欢的名字,例如devel

    公元2年。我们的团队有一个名为production的分支,它应该与生产服务器上运行的和我们部署的完全相同的版本。因此,当我们需要应用修补程序时,我们不必担心master的当前状态——我们只需将其应用于生产


    我建议阅读本文,至少是为了获得灵感:

    这些都很容易用git实现。我们的想法是:

    • 一个“稳定”的
      master
      分支
    • 一个
      staging
      分支跟踪主机并首先获得功能合并:这是完成最终测试的地方
    • 许多功能分支
    如果在master上执行紧急修复,可以通过以下几种方式进行处理:

    • cherry选择提交到每个功能分支。您还可以将修复应用于其他分支和樱桃采摘。樱桃采摘是非常本地化的,可以穿过或从任何分支(原则上)
    • 将主机合并到功能分支中,包括一次性进行的任何“上游”更改
    • 将要素分支重设到主分支上。这本质上是前一项,有一个主要区别:重新基址将把所有分支的提交倒带并重放到主节点的顶端,因此当重新基址后合并分支时,它将有一个非常线性的实现历史,并且所有分支的提交都是连续的

    这些都很容易用git实现。我们的想法是:

    • 一个“稳定”的
      master
      分支
    • 一个
      staging
      分支跟踪主机并首先获得功能合并:这是完成最终测试的地方
    • 许多功能分支
    如果在master上执行紧急修复,可以通过以下几种方式进行处理:

    • cherry选择提交到每个功能分支。您还可以将修复应用于其他分支和樱桃采摘。樱桃采摘是非常本地化的,可以穿过或从任何分支(原则上)
    • 将主机合并到功能分支中,包括一次性进行的任何“上游”更改
    • 将要素分支重设到主分支上。这本质上是前一项,有一个主要区别:重新基址将把所有分支的提交倒带并重放到主节点的顶端,因此当重新基址后合并分支时,它将有一个非常线性的实现历史,并且所有分支的提交都是连续的

    而不是每个开发人员都有自己的分支,考虑让他们在他们自己的回购中做所有的准备工作,但是他们想这样做,然后清理发布的历史,并将他们自己的合并到一个公共测试分支,并且一旦它通过,主机就被快速转发给它。开发人员最了解自己的代码,通常可以轻松地进行重新调整,而且根本没有理由在生产中有混乱的历史。即使你不想纯粹的线性,我会说最好是WIP私下完成,依靠协作来保持任何重叠的私人工作同步,而不是每个有自己分支的开发者,考虑让他们在他们自己的回购中做所有的准备工作,但是他们想这样做。然后清理历史记录以便发布,并将它们自己合并到一个公共测试分支,一旦通过,master就会快速转发到该分支。开发人员最了解自己的代码,通常可以轻松地进行重新调整,而且根本没有理由在生产中有混乱的历史。即使你不想要纯粹的线性,我想说最好让wip提交私下进行,依靠协作来保持任何重叠的私人工作同步。很棒的链接+1为此,有一些“最佳实践”非常有用!谢谢你的链接。因此,在您所建议的模型中,有一个问题是,拥有一个二级主控意味着很多人都在推动功能,有些人可能有问题,如果人们不恢复这些提交,他们可能会被甩在后面……会出现很多混乱的情况,因为这需要不断的协调和沟通。马克:我恐怕不能完全理解你的问题。通常,master作为代码库的最新但稳定的版本保存。任何可能使主机处于非稳定状态的开发都是在其自己的特性分支中完成的。完成后,或者当它达到某种稳定性时,它可以合并到master中。此外,母版会不时合并到此功能分支,以使其与其他更改保持最新