上一篇版本控制系统Git 入门(三)
分支管理
强大的分支管理是git的一大优势之一,当然有集中式管理系统SVN的也有分支的管理,但相比git相对弱很多。那么分支在实际中有什么作用呢?假设你和另一个同事是一起合作开发一个项目的,这时候你正打算开发新的需求,而你的同事还在原来的版本上修改bug,而你的正在开发的新需求在时间上和风险上不是很得到控制估计会影响到你的同事在修改bug,因此你不如创建一个属于你自己的分支,然后你开发完后再合并回原来的分支上,这样就造成两不误了。互不影响。其实发布版本的分支(一般叫Master分支)和正常开发(修改bug)的分支还有另有需求需要修改的分支都是需要的,如下图
Master分支
master分支是git默认提供的分支,基本上所有的开发都是以master为中心进行开发,不同分支进行作业之后都会与master分支进行合并,如下图
提示:再次提醒上篇中提到的HEAD,HEAD是指向当前分支中的最新提交。
显示分支一览表git branch
git branch
可以显示分支名列表,并且用*表示当前所在的分支。
解析:
根据命令提示,当前只有master分支,并且当前是在master分支下进行开发。
创建分支git branch <name>
使用命令git branch featureA
创建分支featureA。再使用git branch
查看分支列表。
解析:创建了分支featureA,但是还是在master分支上进行作业。
切换分支git checkout <name>
在上面操作的基础上使用命令git checkout featureA
切换到分支featureA上,再使用命令 git branch
查看当前所在的分支
创建、切换分支 git checkout -b
但常常会使用git checkout -b 分支名
来创建并切换分支,它相当于执行了创建和切换两条命名。
解析:
由上图的两条命令知道,创建了featureB并且切换到了featureB中。
切回上一个分支git checkout -
使用命令 git checkout -
是切回到上一个命令。
git merge 合并分支
切换到分支featureA,在git.txt上加入一行add featureA,然后提交到分支上,切换到分支master,查看git.txt看出现了啥?
解析:
刚刚提交的 ,因为HEAD指向的是featureA分支,所以你做的任何修改和提交都是发生在featureA上,对master分支没有任何影响。
现在,切换回master分支,在master分支上,合并featureA分支,使用git merge featureA
,再使用cat git.txt
查看git.txt的内容。
解析:可以看到“add featureA”,已经添加进来了。
删除分支git branch -d <name>
继续上面的操作,在featureA上做的操作已经完成也合并到了master分支上,那么featureA已经没有任何意义了(注意:开辟一个分支最好只做一个功能),那么就应该删除它,使用git branch -d featureA
把分支featureA删除。
解析:根据提示,featureA分支成功删除。
以图表形式查看分支git log --graph
输入命令git log --graph
以图表的形式查看log。
非常直观,请经常使用。