通常,合並分支時,如果可能,Git會用Fast forward
模式,但這種模式下,刪除分支后,會丟掉分支信息。
如果要強制禁用Fast forward
模式,Git就會在merge時生成一個新的commit,
這樣,從分支歷史上就可以看出分支信息。
下面我們實戰一下--no-ff
方式的git merge
--
首先,仍然創建並切換dev
分支:
$ git checkout -b dev
---
修改readme.txt文件,並提交一個新的commit:
----
現在,我們切換回master
:
-----
>>>准備合並dev
分支,請注意--no-ff
參數,表示禁用Fast forward
$ git merge --no-ff -m "merge with no-ff" dev
>>>>>因為本次合並要創建一個新的commit,所以加上-m
參數,把commit描述寫進去。
------
合並后,我們用git log
看看分支歷史:
-------
可以看到,不使用Fast forward
模式,merge后就像這樣
使用Fast forward時是這樣的
合並分支時,加上--no-ff
參數就可以用普通模式合並,
合並后的歷史有分支,能看出來曾經做過合並,
而fast forward
合並就看不出來曾經做過合並。
分支策略
在實際開發中,我們應該按照幾個基本原則進行分支管理:
首先,master
分支應該是非常穩定的,也就是僅用來發布新版本,平時不能在上面干活;
那在哪干活呢?
干活都在dev
分支上,也就是說,dev
分支是不穩定的,
到某個時候,比如1.0版本發布時,再把dev
分支合並到master
上,在master
分支 發布1.0版本;
你和你的小伙伴們每個人都在dev
分支上干活,每個人都有自己的分支,時不時地往dev
分支上合並就可以了。
所以,團隊合作的分支看起來就像這樣: