我为每个功能都有一个Git分支。但是,有时,在分支A
中进行开发时,我想测试A
在应用B
时的行为方式。
目前,我用这个:
git checkout A
git branch base
git merge B
git reset --mixed base
git branch -D base
有更短的方法吗?
此外:如果A
和B
不共享相同的祖先,该怎么办?
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
答案 0 :(得分:1)
一种可能性:
$ git checkout $(git rev-parse A)
$ git merge B
$ git checkout - # returns you to wherever you were before
这将检查基础修订(让您处于分离的HEAD状态)并从那里进行更改。这种方法的好处是您不再需要创建和删除分支。这不会使工作流程变得更短,但是你应该能够将它包装在一个函数中,接受一些参数并重用它。
关于你的第二个问题:你应该能够使用merge-base
来确定共同的祖先,并使用它来合并或者挑选提交(回想一下有这个功能的功能)为你)。