我有以下情况:
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实现我想要的目标?
答案 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~都引用相同的提交。