我在本地分支上工作,並推送了10個提交。 現在我想將這些提交合併到master分支,但它必須只包含一個包含所有10個提交的提交。合併本地分支到主分支的代碼,但作爲單個提交
我讀過關於rebasing但是據我可以告訴它重寫本地分支的歷史。
我在本地分支上工作,並推送了10個提交。 現在我想將這些提交合併到master分支,但它必須只包含一個包含所有10個提交的提交。合併本地分支到主分支的代碼,但作爲單個提交
我讀過關於rebasing但是據我可以告訴它重寫本地分支的歷史。
這叫做壁球合併。但它並不是一個真正的合併:合併 - 更確切地說,一個合併提交,將「合併」用作形容詞,或者當我們將它縮寫爲「合併」時,將其作爲名詞 - 是提交兩個(甚至更多,但兩個都需要)父提交,因此加入了兩個早期的分歧歷史。 Git中的「squash merge」使用普通的單親提交,使用所有合併的動作 - 「合併爲動詞」 - 定期合併將會執行,但故意無法將結果記錄爲合併。
換句話說,合併作爲一種動詞,卻得到了一個不合並作爲一種名詞普通提交其結果是,你使用Git的「壁球合併」:
git merge --squash <otherbranch>
這可以完成合並的所有工作,但會進行一次普通的提交。
除了出於某種原因,--squash
也開啓--no-commit
自動,使壁球動作完成後,你必須自己運行git commit
。
(可以使用--no-commit
沒有--squash
,得到同樣的「暫停合併作爲一種動詞後」的效果。你在這種情況下做出的承諾是一個真正的合併提交。)
注意,一旦你做了一個壓倒性的普通提交,在你被壓扁的分支上做更多的工作很少有好處。放棄(並最終刪除)該分支通常是最明智的。
謝謝,併爲延遲抱歉! –
您正在尋找rebase + squash。 –