【问题标题】:Git flow - create feature branch off another feature branchGit流程-从另一个功能分支创建功能分支
【发布时间】:2020-11-06 00:24:58
【问题描述】:

我已经使用git flow 有一段时间了。我很想了解一个特定的用例。

对于我的一个项目,我有一张新网站功能的门票。这张票取决于许多子任务。我想为主工单创建一个功能分支,然后为每个子任务从父功能分支创建一个功能分支。

假设我有一张 PROJ-500 票,并为它创建了一个功能分支

git flow feature start PROJ-500

然后我想将票证PROJ-501PROJ-515 整合到PROJ-500 中,然后再将整个事情整合到develop 中。有没有办法让我做类似的事情

git flow feature start PROJ-511 -b PROJ-500

然后随着时间的推移,这些子任务会完成,当它们的功能完成时,分支会合并到PROJ-500

git flow feature finish PROJ-511

上述命令会将PROJ-511 合并为PROJ-500

一旦所有子任务完成,PROJ-500 将完成并合并到develop

通过这种方式,新的网站功能可以作为一个单独的单元而不是零碎地集成到开发中。

【问题讨论】:

  • 这不行吗? git flow feature start PROJ-511 PROJ-500?您在评论中发布的对 DerekS 回答的链接表明它应该这样做。

标签: git git-flow


【解决方案1】:

您可以通过

创建子功能分支
git flow feature start PROJ-511 feature/PROJ-500

但是您不能使用 GitFlow 工具将分支合并回主要功能分支,因为如果这样做

git flow feature finish PROJ-511

该功能将合并到develop。尔格不支持子功能,您需要手动完成。

替代方案:不过,这个要求并不新鲜。有一个open issue 和一个fork project 声称支持将功能整理到develop 以外的分支中。我还找到了一个pull request,它实现了该功能。您可能想尝试该修改,看看是否满意。


2019-12-13 更新:正如用户 Matěj Kříž 刚刚在他的评论中提到的,用户 Tony Chemit 写了一个答案 @987654324 @ 在我的几个月后,指向 gitflow-avh 作为原始 gitflow 产品的替代品。它使用上面显示的语法支持开箱即用的子功能。几年过去了,现在 AVH 版本是 Git for Windows 正常安装的一部分,我刚刚在我的本地机器上验证了这一点并测试了子功能选项。 IE。对于 Windows 用户,它只在 Git 安装后即可工作。

【讨论】:

  • @pymarco:感谢您接受答案。不过我很好奇:您是否尝试过任何替代方案?如果是这样,是哪一个?结果如何?它是否按预期工作?也许其他读者可以从您的经验中学到一些东西。 :-)
  • 对不起,我没有时间回到这个。我会在某个时候尝试。
  • 为什么投反对票?否决票旨在用于写得不好、草率的答案,没有任何研究努力或知识的迹象。无论如何,谢谢。
  • 如果您使用 gitflow-avh 版本,请查看stackoverflow.com/a/29353800/472611 @tony-chemit 答案
【解决方案2】:

据我了解,gitflow 已经被彻底抛弃了。

gitflow-avh 替换它并提供此功能(请参阅 https://github.com/petervanderdoes/gitflow#creating-featurereleasehotfixsupport-branches)。

我只是试了一下,效果很好。

git flow feature start PROJ-511 feature/PROJ-500
git flow feature finish PROJ-511

PROJ-511 被合并到 feature/PROJ-500

【讨论】:

    【解决方案3】:

    如前所述,我们可以使用任何基础分支来启动新功能

    git flow feature start PROJ-511 feature/PROJ-500
    

    为了完成子功能,我们可以临时更改 git flow 配置以使用我们的功能分支而不是 develop

    git flow config set develop feature/PROJ-500 && git flow feature finish PROJ-511
    

    这样,git flow 会运行所有命令和完整性检查。最后,要恢复配置,我们可以运行

    git flow config set develop develop 
    

    【讨论】:

      【解决方案4】:

      更新(2020 年 11 月 5 日):如较新的答案 here 中所述,这可以通过 gitflow-avh 替代原始 git 流。

      ====================

      原答案:

      我认为 git flow 中没有这种方法,但仅使用 git 就相当简单。

      git checkout PROJ-500
      git checkout -b PROJ-511
      ...do your PROJ-511 work...
      git checkout PROJ-500
      git merge PROJ-511
      git branch -d PROJ-511
      

      【讨论】:

      猜你喜欢
      • 2017-07-04
      • 1970-01-01
      • 2011-09-14
      • 2020-12-15
      • 1970-01-01
      • 2014-07-01
      • 2017-07-01
      • 2013-01-31
      • 1970-01-01
      相关资源
      最近更新 更多