8

我为每个功能都有一个 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
4

1 回答 1

1

一种可能:

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

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

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

于 2015-09-09T10:44:33.743 回答