我們的一個常見的開發流程是結賬分支b
,提交一堆,然後壓縮所有這些提交到一個(仍然在b
)。Git壓扁所有提交分支沒有衝突
然而,在rebase -i
過程壁球所有提交,經常存在衝突的多個步驟。
我基本上是想改變爲一個提交的分支代表庫在決賽時的狀態提交上b
我已經做了一些搜索,但我沒有什麼發現我在找。我不想merge --squash
,因爲我們想在合併前測試壓扁的特徵分支。
我們的一個常見的開發流程是結賬分支b
,提交一堆,然後壓縮所有這些提交到一個(仍然在b
)。Git壓扁所有提交分支沒有衝突
然而,在rebase -i
過程壁球所有提交,經常存在衝突的多個步驟。
我基本上是想改變爲一個提交的分支代表庫在決賽時的狀態提交上b
我已經做了一些搜索,但我沒有什麼發現我在找。我不想merge --squash
,因爲我們想在合併前測試壓扁的特徵分支。
如果您不需要提交信息,那麼你可以只是做一個軟復位。然後文件保持原樣,當您提交時,此提交將在您重置爲的提交之上。
要查找的承諾重置爲:
git merge-base HEAD BRANCH_YOU_BRANCHED_FROM
然後
git reset --soft COMMIT_HASH
然後重新工藝的承諾,也許是:
git commit -am 'This is the new re-created one commit'
聰明!我喜歡它 –
這太酷了。 –
這是simlar從答案Rasmus,但分爲三個步驟,應始終工作:
$ git merge feature1
$ git reset --soft [email protected]{1}
$ git commit -c feature1
說明:
可能重複的[Git中,就是合併--squash和底墊之間的區別?(http://stackoverflow.com/questions/2427238/in-git-what-is-the-difference-between-merge-squash-和REBA se) –
從這個問題 - 我不希望'G'在'stable'中,我希望它仍然在功能分支上。不知道我是否錯過了什麼 –
難道你不能只是櫻桃選擇'G'嗎? –