git - 管理相关的进行中的 git 功能分支/分支集

标签 git workflow feature-branch

最近我似乎有这种重复的场景,有多个功能分支正在开发中,一个功能分支(下图中的feature-b)依赖于另一个未完成的功能(已开发)的支持在 feature-a 中:

---o---o--o                    master
       |
       +---o---o---o           feature-a
                   |
                   +----o---o  feature-b

每当我修改 feature-a(包括交互式 rebase 以修复功能中的错误)时,我需要将 feature-b rebase 到 feature-a。这些是本地分支,因此我可以随意修改它们。

我比较常遇到的情况是:

             master                                         testing
---o---o--o-------------------------------------------o---o
       |              feature-a                      .   .
       +---o---o---o                                .   .
                   |           feature-b           .   .
                   +----o---o .....................   .
                   |           feature-c             .
                   +----o---o .......................

其中测试分支是正在开发的所有(相关)功能的组合,通过 merge 其上的所有相关功能分支而产生(在图片中masterfeature-bfeature-c – 并暗示 feature-a)。

目前,特别是如果有更复杂的功能分支关系,我有 gitk 不断打开以可视化分支关系,并维护 shell 脚本自动执行此 rebase ,但这种方法似乎脆弱且通用滋扰。我想知道的:

  1. 有没有一种方法可以描述甚至自动检测分支关系,然后用一个命令尝试重新加强所描述的关系(在上面的简单示例中,在通过 rebase 或向头部添加新提交来更改 feature-a 之后,在 feature-a 的新头部上自动执行 rebase feature-b >).
  2. 用于将一组分支 rebase 到其他提交的 GUI 工具(如果冲突会阻止操作,只需给出错误就可以了)?
  3. 管理这个困惑的分支机构的其他想法?涉及的意外复杂性成本太高 时间和消耗太多脑力。

最佳答案

I do not like pushing bad stuff for others to see, and I like to keep the final history look clean.

这是个坏习惯。您应该为“建议的更新”保留一个 master 和一个 pu。将您的提交推送到 pu,然后根据需要将 pu rebase 到 master。在适当的时候,您可以从 pu 中挑选,甚至可以将 pu merge 到 master 中。

这就是 git repo 的处理方式本身。避免掉进无尽分支的“兔子洞”。

related

关于git - 管理相关的进行中的 git 功能分支/分支集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13493071/

相关文章:

git - 如何通过从终端运行命令来打开指向我的 Github 存储库的链接?

workflow - Microsoft Dynamics CRM 2011 使用工作流创建报价产品记录

asp.net - Entity Framework 4 - 从模型更新数据库架构。不删除表数据

algorithm - 激活 AND 节点和 OR 节点

git - 如何强制将功能分支推送到 Gerrit?

git - 将功能分支 rebase 到另一个功能分支

git - 修复损坏的 Git 存储库

git - 如何配置 'git push -u'来推断远程分支名称?

Git pull - 错误 : The following untracked working tree files would be overwritten by merge:

svn - 颠覆 : Merging subtrees vs. 合并跟踪