2014年9月25日 星期四

git merge "--no-ff" option


我最近發現了一個問題,就是我們如果直接用 merge 指令把分出去的 branch merge 回來。
它似乎會把 log  合併。所以就會造成 git log 裡面列出來的項目包含了 branch 的項目,這樣對於要找以前的紀錄真的是相當的困擾。

正巧在網路上看到一篇文章,裡面有提到相關的內容。
Git 版本控制 branch model 分支模組基本介紹
裡面主要的內容是在討論如何規畫一個專案的 branch。這個可能因為大家的需求不同,可以參考。而作者也提到他的內容主要是參考自:A successful Git branching model,而圖片也是從這篇文章而來。

相關的細節就請有需要的人到原作都的網頁去看了,我來說明一下我的重點 "--no-ff" option。

git 預設的 merge 是沒有 --no-ff 參數的,所以 merge 完會像我說的那樣,log 紀錄也會一併被 merge 回原本的 branch。如果希望達到跟 merge 的說明中一樣的效果:
                     A---B---C topic
                    /         \
               D---E---F---G---H master
其實是需要用到 --no-ff 的參數的。

一樣,我借用 A successful Git branching model 裡精美又清楚的圖片:
雖然 help 裡面是那樣畫的,不過實際上預設的 merge 是會得到右邊的結果的,想要得到左邊的結果,請用
"git merge --no-ff <branch_name>"

PS:實際上我還沒實驗過,不知道實際上的差異會如何?

沒有留言:

張貼留言