复杂的交互式rebase一步到位?

时间:2010-12-28 20:01:44

标签: git rebase git-rebase

我在这个形状的git中有两个分支。

* fffffff commit f
* ddddddd commit d
* bbbbbbb commit b
| * eeeeeee commit e
| * ccccccc commit c
| * aaaaaaa commit a
|/  
* 2222222 base revision 2
* 1111111 base revision 1

我想像使用rebase --interactive那样重新设置和重新排序提交。但是,我想交错几个提交,并结束这样的形状。

* ffffff2 commit f
* eeeeee2 commit e
* dddddd2 commit d
* cccccc2 commit c
* bbbbbb2 commit b
* aaaaaaa commit a
* 2222222 base revision 2
* 1111111 base revision 1

有没有办法一步完成这个rebase?我尝试通过在commit e之上重新设置提交b然后再做第二个交互式rebase来分两步来分两步完成提交。问题是我得到合并冲突(例如,在提交b和提交e之间),否则我将看不到(通过在提交之后放置提交b)并且它不值得解决冲突。

1 个答案:

答案 0 :(得分:8)

从任何一个分支开始( BranchWithF BranchWithE )并发出交互式rebase,例如

git checkout BranchWithF
git rebase -i HEAD~3

当弹出编辑器和提交列表时,添加(读取:键盘上的类型......)并交错

pick aaaaaaa
pick ccccccc
pick eeeeeee

到你认为合适的列表。

之后, BranchWithF 将拥有所有6次提交,你可以扔掉 BranchWithE (仍有3次提交)。