【发布时间】:2012-10-23 11:32:53
【问题描述】:
我有一个看起来像这样的主题分支。 (分支主题当前指向'a0a0')
- a0a0 将分支“Master”合并到主题中
- b1b1 将分支“主”合并到主题中
- c2c2 将提交的“来自 master 的东西”合并到主题中
- d3d3 将分支“主”合并到主题中
- e4e4 将分支“主”合并到主题中
- f5f5 将分支“主”合并到主题中
- 6666 次实际提交
- [关于主题分支的大量历史]
- 9999个原始发散点
如何将 a0-f5 变成单个合并提交?
我已经尝试过:git rebase -i f5f5 的目的是将这 5 次提交告诉 squash,但它只是给出了 f5f5 和 a0a0 之间的主分支上的每个提交。所以我把除了第一个和最后一个之外的所有东西都从pick 变成了squash,但这太疯狂了,并且将 master 的每一个提交重新设置为一个巨大的提交来代替所有的合并,失去了它是一个“合并”的事实.这不是我的预期!
我能做到:
$ git reset 6666
$ git merge Master
但这需要我重新进行任何合并提交。
那么我如何将这些不同的合并压缩成一个合并提交,它知道这是一个合并,并且还保留所有合并冲突的东西?
【问题讨论】:
-
A
git rebase -p -i(-p代表“保留合并”)应该这样做......但我有一些疑问:请参阅 stackoverflow.com/a/12967782/6309 中的 cmets -
谢谢。我会在某个时候尝试一下,尽管我不得不等待很长时间,因为它应用了数百个补丁,偶尔会出错并需要我的输入(实际上从来没有冲突,我只需要 git add -u, git rebase - - 继续)