爲什麼只推擠壓扁的提交?這聽起來很瘋狂(和錯誤)。
但是,爲了回答你的問題:
git checkout -b newbranch # checkout new branch
git reset --soft C# move to commit C
git add -u # add all changes to index
git commit -m 'squashed commit'
另一種可能性是使用rebase -i
壁球/修正所有提交到一個單一的一個:
git checkout -b newbranch
git rebase -i C# now, replace every 'pick' with 'fixup'/'squash' except the first one
的利益也就是git merge --squash
:
生成工作樹和索引狀態,就好像發生了真正的合併(exc ept爲合併信息),但不實際提交或移動HEAD,也不記錄$ GIT_DIR/MERGE_HEAD以使下一個git commit命令創建合併提交。這允許您在當前分支上創建一個單獨的提交,其效果與合併另一個分支相同(或者在章魚的情況下更多)。
git checkout -b newbranch C# create newbranch at commit C
git merge --squash mybranch
git commit -m 'squashed commit'
這樣做了,謝謝! – Phillip