我有一个分支从主变化三个变化,并希望将其重新分配给主。例如:Git rebasing交互式不挤压快进时可用
$git checkout master
$git branch dev && git checkout dev
$<do 3 commits>
$git checkout master
$git rebase dev -i
正常情况下-i会给我3次提交并允许我压扁。然而,在这种情况下,它只是“noop”,当rebase完成时,我看到三个提交移到了master。我想这里虽然祖先没有分歧,但是快速的前进是可能的,所以这就是发生了什么。但我想压扁提交。
我试过使用--no-ff,但它和我原来的情况完全一样(noop +不压缩)。
我试着也做的(而在Dev分支)
$git rebase -i HEAD~3
$git checkout master
$git rebase dev
但是,这是一个痛苦真的,我要知道有多少提交壁球的HEAD〜X部分。
脚注: 这对我来说很重要的原因是,它是这个压扁的变更集,将在gerrit中进行审查。如果他们是分开的,它使审查变得不可能。
这里的关键实际上是使用'master'作为rebase的基础,而不是一些专门命名的commit。即使主人太远了,你也知道你可能想要压扁的东西从那时开始。 (另外,'merge --squash'还是自动提交吗?) – Cascabel 2011-05-20 12:11:27
@Jefromi:在我最近使用的所有版本的git中,'git merge --squash'只是对变化进行阶段化。那是不是曾经是这种情况? – 2011-05-20 12:13:20
在引入'git merge --squash'的提交中添加的文档(7d0c68871a8)也表示“实际上不提交提交”。 – 2011-05-20 12:16:33