在Egit中更改分支的出发点

时间:2014-11-12 10:31:44

标签: egit

我有以下情况:

branch A|   branch master
        |   |
        |   |
        |   |   branch B
        |   |   |<------B2
        |   |___|<------B1
        |   |<--------some commits (*) in B and in master, but not in A
        \___|
            |

我从大师那里创建了一个分支B,但那是一个错误,我应该从A创建B,而不是从大师创建。

所以我最初的想法是将Rebase B转换为A. 这种方法的问题在于提交(*)也在B中重新定位,这是我不想要的。 所以我想用&#34; cherry-picking&#34;复制B中的提交(在与master的分歧点之后)到A中。 但是由于Egit使用Interactive Rebase来做到这一点,问题是一样的。提交(*)出现在A。

基本上,我想在分支A中应用B1和B2引入的功能更改,而不需要(*)引入的更改。 我找到的唯一解决方案是为B1手动'create Patch'并将其应用于A,然后将'create Patch'应用于B2,并将其应用于A中。

有没有其他方法可以轻松地使用Egit实现我想要的目标?

1 个答案:

答案 0 :(得分:2)

在命令行中:

git rebase --onto a last-ignored-commit b

git rebase --onto a first-wanted-commit~ b

如果您已经在branch-b上,则不需要将其指定为最后一个参数。两个命令都评估相同的东西。代字号(〜)表示找到第一个父代。因此,last-ignored-commit和first-wanted-commit~都引用相同的提交。