1. 程式人生 > >mzy git學習,禁用Fast forward的普通合併(六)

mzy git學習,禁用Fast forward的普通合併(六)

git merge --no-ff -m "msg" x-branch:禁用Fast forward的普通合併

通常,合併分支時,如果可能,Git會用Fast forward模式,但這種模式下,刪除分支後,會丟掉分支資訊(即:原來這個分支的做了什麼在log中體現不出來)。
為了保留原來的分支,即:普通合併,這樣的話,merge的時候會提交一個commit,就會輸入-m引數,在log中體現的也更清晰!

前面我們解決衝突的時候發現,我們解決衝突之後,即使
是在master主分支上合併dev,最後檢視日誌的時候:

git log --graph --pretty=oneline --abbrev-commit


發現其實合併前後只有一條線,master和mzy指向的是同一個結點。這樣完全看不出合併的痕跡。

但使用--no-ff的話,禁用Fast forward,使用普通合併,就能在合併的位置看到一個commit 突出的合併節點!

假如我們當前在master分支上:
 

git merge --no-ff -m "把dev分支上的內容合併到master上,使用普通合併" dev
$ git log --graph --pretty=oneline --abbrev-commit
*   8fc444b (HEAD -> master) merge with no-ff
|\
| * 1601be9 (dev) add merge
|/
* 4aa96bc 修改了readme.txt
* 68f4f31 修改LICENSE
*   6653ea8 Merge branch 'yao' into mzy

這樣的話,就很利於團隊開發了!
大家都在自己的分支上幹活,時不時的往dev上合併,最後定期合併到master上就好了!這樣也能看出我們的分支的資訊,以及什麼時候合併過,更直觀!預設的fast forward我們是看不出痕跡的!
團隊中開發怎麼用呢?
 

首先有master分支:
在master分支上建立一個master的分支,dev(開發分支):
git checkout master 切換到master上
git checkout -b dev (建立並切換到了dev分支上了)
git branch mzy_a (在dev上為dev建立mzy_a分支)
git branch mzy_b (在dev上為dev建立mzy_b分支)
git branch mzy_c (在dev上為dev建立mzy_c分支)
... ...

git merge --no-ff -m "" 分支名稱。