Git:测试两个功能分支的组合

时间:2015-09-04 10:22:11

标签: git branching-strategy

我为每个功能都有一个Git分支。但是,有时,在分支A中进行开发时,我想测试A在应用B时的行为方式。

目前,我用这个:

git checkout A
git branch base
git merge B
git reset --mixed base
git branch -D base

有更短的方法吗?

此外:如果AB不共享相同的祖先,该怎么办?

o -- o -- o [A]
 \-- x -- o [v1_0]
           \ -- b1 -- b2 -- o [B]

我怎样才能更轻松地做这样的事情?

git checkout A
git branch ABase
git cherry-pick v1_0..B   // only applying b1,b2 not x
git reset --mixed ABase
git branch -D ABase

1 个答案:

答案 0 :(得分:1)

一种可能性:

$ git checkout $(git rev-parse A)
$ git merge B
$ git checkout - # returns you to wherever you were before

这将检查基础修订(让您处于分离的HEAD状态)并从那里进行更改。这种方法的好处是您不再需要创建和删除分支。这不会使工作流程变得更短,但是你应该能够将它包装在一个函数中,接受一些参数并重用它。

关于你的第二个问题:你应该能够使用merge-base来确定共同的祖先,并使用它来合并或者挑选提交(回想一下有这个功能的功能)为你)。