我有一個分支從主變化三個變化,並希望將其重新分配給主。例如: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