2017-07-27 127 views
0

我在本地分支上工作,並推送了10個提交。 現在我想將這些提交合併到master分支,但它必須只包含一個包含所有10個提交的提交。合併本地分支到主分支的代碼,但作爲單個提交

我讀過關於rebasing但是據我可以告訴它重寫本地分支的歷史。

+0

您正在尋找rebase + squash。 –

回答

1

這叫做壁球合併。但它並不是一個真正的合併:合併 - 更確切地說,一個合併提交,將「合併」用作形容詞,或者當我們將它縮寫爲「合併」時,將其作爲名詞 - 是提交兩個(甚至更多,但兩個都需要)提交,因此加入了兩個早期的分歧歷史。 Git中的「squash merge」使用普通的單親提交,使用所有合併的動作 - 「合併爲動詞」 - 定期合併將會執行,但故意無法將結果記錄爲合併。

換句話說,合併作爲一種動詞,卻得到了一個不合並作爲一種名詞普通提交其結果是,你使用Git的「壁球合併」:

git merge --squash <otherbranch> 

這可以完成合並的所有工作,但會進行一次普通的提交。

除了出於某種原因,--squash開啓--no-commit自動,使壁球動作完成後,你必須自己運行git commit

(可以使用--no-commit沒有--squash,得到同樣的「暫停合併作爲一種動詞後」的效果。你在這種情況下做出的承諾是一個真正的合併提交。)

注意,一旦你做了一個壓倒性的普通提交,在你被壓扁的分支上做更多的工作很少有好處。放棄(並最終刪除)該分支通常是最明智的。

+0

謝謝,併爲延遲抱歉! –

相關問題