git merge fast-forward squash no-ff

看了下 git merge 的相關知識 
發現還是不能很好的解決 在Android studio 上 git合併分支 後,
在github desktop 的被合併的分支的提交信息丟失的問題



爲了描述方便, 命名一下兩個分支 
master ,  test
merge  是 master 去 merge test 分支
不管以何種 megre 策略  最後 在test 的提交記錄 依然在 test分支上,
在master 上會有一條 merge 產生那個的新的提交記錄

但是一般我們在Android Studio 看master 提交記錄的時候, 還是能夠看到 合併來的 test 上的提交記錄

但是在github desktop 上就看不到 合併來的 test的提交記錄  
最後一個條 合併產生的提交記錄:

我想這大概是  github 的問題
順便還看了 git rebase 相關的動向, 發現那玩意根本不適用, 不能解決核心問題.


其實 github這樣設計 也是有它的道理的,
如果我們只看master 分支的提交記錄的話, 可以很清晰的看到 其他分支的合併時 提交的記錄

我想 github 是想我們不要手動在master 分支上寫代碼提交,
而是單獨開一個分支,  寫代碼, 然後在把 這個分支合併到master 上去,

這樣master 分支 只需要關注 這個分支實現了什麼功能

具體在這個分支 裏面的多次提交 不需要太在乎, 需要的話 自己前往分支查看

ok 以後代碼 就這樣寫了

做一些  總結 git 一班有以下 三種 merge 方式:
fast-forward
no fast forward
squash

git merge 默認使用的 fast-forward 的合併方式:
下面三種合併法師的區別:


fast-forward方式就是當條件允許的時候,git直接把HEAD指針指向合併分支的頭,完成合並。屬於“快進方式”,不過這種情況如果刪除分支,則會丟失分支信息。因爲在這個過程中沒有創建commit

squash 是用來把一些不必要commit進行壓縮,比如說,你的feature在開發的時候寫的commit很亂,那麼我們合併的時候不希望把這些歷史commit帶過來,於是使用--squash進行合併,此時文件已經同合併後一樣了,但不移動HEAD,不提交。需要進行一次額外的commit來“總結”一下,然後完成最終的合併。

--no-ff指的是強行關閉fast-forward方式。


一些產考連接:
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章