--no-ff是什麼意思? ? 和 git merge --squash 有什麼差別? ? ?
--no-ff指的是強行關閉fast-forward方式。
--no-ff
fast-forward方式就是當條件允許的時候,git直接把HEAD指標指向合併分支的頭,完成合併。屬於“快進方式”,不過這種情況如果刪除分支,則會丟失分支資訊。因為在這個過程中沒有創建commit
git merge --squash 是用来把一些不必要commit进行压缩,比如说,你的feature在开发的时候写的commit很乱,那么我们合并的时候不希望把这些历史commit带过来,于是使用--squash進行合併,此時文件已經同合併後一樣了,但不移動HEAD,不提交。需要進行一次額外的commit來「總結」一下,然後完成最終的合併。
git merge --squash
--squash
總結:--no-ff:不使用fast-forward方式合并,保留分支的commit历史--squash:不使用fast-forward方式合併,保留分支的commit歷史
http://git-scm.com/docs/git-merge
即使合併解析為快進,也要建立合併提交。這是合併帶註釋(可能還有簽名)標籤時的預設行為。
--no-ff
指的是強行關閉fast-forward方式。fast-forward方式就是當條件允許的時候,git直接把HEAD指標指向合併分支的頭,完成合併。屬於“快進方式”,不過這種情況如果刪除分支,則會丟失分支資訊。因為在這個過程中沒有創建commit
git merge --squash
是用来把一些不必要commit进行压缩,比如说,你的feature在开发的时候写的commit很乱,那么我们合并的时候不希望把这些历史commit带过来,于是使用--squash
進行合併,此時文件已經同合併後一樣了,但不移動HEAD,不提交。需要進行一次額外的commit來「總結」一下,然後完成最終的合併。總結:
--no-ff
:不使用fast-forward方式合并,保留分支的commit历史--squash
:不使用fast-forward方式合併,保留分支的commit歷史--squash
:使用squash方式合併,把多次分支commit歷史壓縮為一次http://git-scm.com/docs/git-merge