我們前面提到了Fast Forward這種合并模式,這種很方便,Git默認(rèn)也會優(yōu)先使用這種模式,但同時會帶了一個問題,一旦合并且刪除分支后,分支的信息將不再存在。
我們可以強(qiáng)制禁止Fast Forward模式,禁止之后Git就會在merge時產(chǎn)生一個新的commit記錄,這樣帶來的好處顯然易見,那就是可以從歷史commit記錄中查看到分支信息;
現(xiàn)在來學(xué)習(xí)如何以--no-ff普通模式來git merge:
//現(xiàn)在在master分支上的文件內(nèi)容
$ cat README.text
無關(guān)風(fēng)月oo
//創(chuàng)建新的dev分支
$ git checkout -b dev
Switched to a new branch 'dev'
//修改README.text 文件內(nèi)容
$ vi README.text
此恨無關(guān)風(fēng)與月oo
//提交一個新的commit
$ git add README.text
$ git commit -m 'dev modify'
[dev 61d1a87] dev modify
1 file changed, 1 insertion(+), 1 deletion(-)
//切回master并使用普通模式合并
$ git merge --no-ff -m 'noff mergemerge with no-ff' dev
Merge made by the 'recursive' strategy.
README.text | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
因為本次合并需要創(chuàng)建一個新的commit,所以加上-m參數(shù),把commit描述寫上。
然后我們使用git log查看分支歷史:
$ git log --graph --pretty=oneline --abbrev-commit
* 4102d9e (HEAD -> master) noff mergemerge with no-ff
|\
| * 61d1a87 (dev) dev modify
|/
* 3833f92 init master
分支策略
在實際開發(fā)中,我們應(yīng)該按照幾個基本原則進(jìn)行分支管理:
首先,master分支應(yīng)該是非常穩(wěn)定的,也就是僅用來發(fā)布新版本,平時不能在上面干活;
那在哪干活呢?干活都在dev分支上,也就是說,dev分支是不穩(wěn)定的,到某個時候,比如1.0版本發(fā)布時,再把dev分支合并到master上,在master分支發(fā)布1.0版本;
你和你的小伙伴們每個人都在dev分支上干活,每個人都有自己的分支,時不時地往dev分支上合并就可以了。
所以,團(tuán)隊合作的分支看起來就像這樣:

image.png