git merge
merge
默認是fast-forward方式來merge,不會顯示 feature,只保留單條分支記錄。git直接把HEAD指針指向合並分支的頭,完成合並。屬於“快進方式”,不過這種情況如果刪除分支,則會丟失分支信息。因為在這個過程中沒有創建commit。
git merge --no-ff
--no-ff
指的是強行關閉fast-forward方式。可以保存之前的分支歷史。能夠更好的查看 merge歷史,以及branch 狀態
git merge --squash
git merge --squash
是用來把一些不必要commit進行壓縮,比如說,你的feature在開發的時候寫的commit很亂,那么我們合並的時候不希望把這些歷史commit帶過來,於是使用--squash進行合並,此時文件已經同合並后一樣了,但不移動HEAD,不提交。需要進行一次額外的commit來“總結”一下,然后完成最終的合並。
開發分支的git log:
使用git merge --squash
將開發分支合到master后會新編輯一條git comment來總結這幾次提交記錄,一下為所有分支的git log:
master分支的git log:
總結:
--no-ff
:不使用fast-forward方式合並,保留分支的commit歷史
--squash
:使用squash方式合並,把多次分支commit歷史壓縮為一次