1. 分支介绍
分支的简单的理解就是分身,就像孙悟空拔出猴毛变出很多跟自己一模一样的猴子,然后每个猴子做自己的事情互不干涉,等到所有猴子做完之后,猴子集合来合并劳动成果,然后悟空就把那些猴子猴孙门统统收回了。Git的分支也是一个杀手锏级别的功能!
为了和我们的实际工作更加接近,我们讲个世纪的例子,让大家体会一下分支:
比如:你现在正在a.php里面做新功能的增加,大约写了300行代码,突然,线上运行的代码爆出了一个bug,需要你放下一切手头工作,全力解决这个bug,你去检查后发现,原来是这个a.php,出了点bug,修改的话也就是20来行代码完事。
这时候问题来了:你从线上直接down下a.php修改的话,这个bug当时处理了,但是等前面的那个300行代码的后续工作做完,再传到线上的时候,就把这次的bug修改又覆盖掉了,bug依然会再次出现。如果你直接在你的开发版本上的a.php中修改的话,难保你新写的这300行代码不出新的bug。这时候咋办?
这时候,我们的分支概念就起效了,下面我们可以看一下流程:
2. 创建分支
git branch 分支名
git branch命令会列出所有分支,当前分支前面会标一个*号
3. 切换分支
git checkout 分支名
创建并切换到新分支,可以使用:
git checkout -b 分支名
4. 合并分支
git merge命令用于合并指定分支到当前分支,下面是一个例子:先切换到master分支,然后将新分支my合并到master分支
git checkout master
git merge my
如果合并时加上--no-ff参数,表示禁用Fast forward模式合并,如:
git merge --no-ff -m "merge with no-ff" my
合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。
5. 删除分支
git branch -d 分支名
6. 删除有内容的分支
git branch -D 分支名
7. 分支管理策略
在实际开发中,我们应该按照几个基本原则进行分支管理:
首先,master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活; 干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本; 你和你的小伙伴们每个人都在dev分支上干活,每个人都有自己的分支,时不时地往dev分支上合并就可以了。