我们前面提到了Fast Forward这种合并模式,这种很方便,Git默认也会优先使用这种模式,但同时会带了一个问题,一旦合并且删除分支后,分支的信息将不再存在。
我们可以强制禁止Fast Forward模式,禁止之后Git就会在merge时产生一个新的commit记录,这样带来的好处显然易见,那就是可以从历史commit记录中查看到分支信息;
现在来学习如何以--no-ff
普通模式来git merge
:
//现在在master分支上的文件内容
$ cat README.text
无关风月oo
//创建新的dev分支
$ git checkout -b dev
Switched to a new branch 'dev'
//修改README.text 文件内容
$ vi README.text
此恨无关风与月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(-)
因为本次合并需要创建一个新的commit,所以加上-m参数,把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
分支策略
在实际开发中,我们应该按照几个基本原则进行分支管理:
首先,master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;
那在哪干活呢?干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本;
你和你的小伙伴们每个人都在dev分支上干活,每个人都有自己的分支,时不时地往dev分支上合并就可以了。
所以,团队合作的分支看起来就像这样:
image.png
网友评论