Git:如何从分支树的根到叶进行分层合并?(补丁堆栈管理)

Git:如何从分支树的根到叶进行分层合并?(补丁堆栈管理),git,branch,patch,Git,Branch,Patch,我主要使用Git进行版本控制,但也尝试过Mercurial。虽然我一般不太喜欢Mercurial,但使用Mercurial队列(MQ)维护清晰分离的补丁的想法非常吸引人。因此,我想在Git中找到类似的东西(但更容易使用,更“gitty”,甚至更强大) 因此,我将首先解释我的想法: 例如,假设我正在进行测试驱动开发。我的主分支遵循软件的主存储库。在此基础上,我有一个分支称为“功能测试”,并由此分支为“功能实现”: 对于每个分支,我都记得父分支 然后,实现将像这样工作:我签出特性测试并编写一些测试。

我主要使用Git进行版本控制,但也尝试过Mercurial。虽然我一般不太喜欢Mercurial,但使用Mercurial队列(MQ)维护清晰分离的补丁的想法非常吸引人。因此,我想在Git中找到类似的东西(但更容易使用,更“gitty”,甚至更强大)

因此,我将首先解释我的想法:

例如,假设我正在进行测试驱动开发。我的主分支遵循软件的主存储库。在此基础上,我有一个分支称为“功能测试”,并由此分支为“功能实现”:

对于每个分支,我都记得父分支

然后,实现将像这样工作:我签出特性测试并编写一些测试。然后我检查特性实现,将其重新设置为特性测试的当前状态,并编写实现。等等

在某个时刻,我更新了master,然后重新设置了特性测试和特性实现的基础

作为一个旁注:与重新设置分支的位置不同,另一种方法是合并来自父分支的更改。这使冲突解决变得更容易。无论如何,通过分支链的级联合并就像一个重基

当然,上面描述的过程包含大量繁琐的手工工作。因此,我正在为以下任务寻找工具:

  • 在分支上时,从它跟踪的远程分支上拉主节点,并沿分支链合并更改。遇到冲突时,切换到发生冲突的分支,允许用户解决冲突,然后继续级联合并(类似于git rebase遇到冲突时的操作)
  • 签出分支时,将自动从祖先分支进行级联合并。冲突处理应如前一点所述
级联合并不应该签出master及其下的分支(除非有必要解决冲突),以避免由于接触但未更改的文件而进行重建

这些要求有意义吗?是否有类似工作流的现有工具?

显然,它完全符合我的要求:

  • 您可以定义修补程序所依赖的修补程序*es*(是的,复数!)
  • 从修补程序分支,可以轻松创建修补程序文件
  • “tg更新”从父补丁分支拖动更改。它也可以递归地执行此操作
  • 这听起来很有希望,可以开始使用它,以后再关注细节。

    显然,这正是我想要的:

  • 您可以定义修补程序所依赖的修补程序*es*(是的,复数!)
  • 从修补程序分支,可以轻松创建修补程序文件
  • “tg更新”从父补丁分支拖动更改。它也可以递归地执行此操作
  • 这听起来很有希望,可以开始使用它,以后再关注细节

    master
    |_ feature-test
       |_ feature-implementation