因为我听说作为一个懒惰的程序员是一种美德,我推迟了我的git-flow功能分支的创建:
* dca9fae - Merge branch 'feature/refactor' into develop
|\
| * 9ca4bc3 - Delivery task
| * 8b2e03f - rf up Repo DSL attributes
|/
* e1ddb98 - access to self.views made private
* 0ab6725 - extract Repo#aggregate
* 9bf6ca0 - Merge branch 'feature/mapper'
我希望通过提升我的两个重构提交来清理我的提交历史记录,并得到类似的结果:
* dca9fae - Merge branch 'feature/refactor' into develop
|\
| * 9ca4bc3 - Delivery task
| * 8b2e03f - rf up Repo DSL attributes
| * e1ddb98 - access to self.views made private
| * 0ab6725 - extract Repo#aggregate
|/
* 9bf6ca0 - Merge branch 'feature/mapper'
我的原始编辑我的提交历史记录是:
git rebase -i 9bf6ca0
可悲的是,这破坏了我不错的非快进合并泡沫并将整个事情弄平了这样的事情:
* dca9fae - Merge branch 'feature/refactor' into develop
* 9ca4bc3 - Delivery task
* 8b2e03f - rf up Repo DSL attributes
* e1ddb98 - access to self.views made private
* 0ab6725 - extract Repo#aggregate
* 9bf6ca0 - Merge branch 'feature/mapper'
如何使 git rebase 保留我的非快进合并?
我不仅对如何从第一个例子开始获取我的第二个例子感兴趣,而且还从第三个例子开始。
答案 0 :(得分:1)
基本上你可以这样做:
git reset --hard 9ca4bc3
git merge --no-ff 9bf6ca0
不幸的是,您确实告诉了您的分支机构目前指向的位置。你真正想要的可能是这样的:
git checkout refactor
git reset --hard 9ca4bc3
git checkout develop
git reset --hard 9bf6ca0
git merge --no-ff refactor
您也没有指定上游分支指向的位置。注意不要更改已发布的任何提交。
git rebase
没有意义。它只需要你的提交并将它们添加到新的基础。在您的情况下,旧基数似乎与新基数完全相同,因此结果与之前完全相同。 (仅缺少合并提交。)