在运用git管理代码的时候,有时需要修改代码。git提供了分支的功能,这样,可以很方便的添加功能,修改bug等,合理的运用分支,可以使代码的演进保持简介清晰,这样能够高效的管理代码,开发功能等。下面介绍一种管理分支的策略。
主分支
主分支代码的主版本,能够随时用来上线,另外,应该避免直接向主分支提交代码,而是从其他分支合并。名称为master。
开发分支
用来进行日常的开发工作。在开发分支完成以后,比如完成一个新功能,就可以合并到主分支上,然后发布代码。直接以dev命名。具体操作如下:
#从主分支上分出dev分支 $ git checkout -b dev master #将dev分支合并到mastet分支 $ git checkout master #切换到master分支 $ git merge --no-ff dev #合并dev分支
上面参数中 –no-ff 的意思如下:
在执行快进式合并(fast-farward merge)时,使用–no-ff参数后,执行正常的合并,在master上生成一个新节点,而没有参数时,会直接将master指向dev分支,推荐第二种做法。
临时性分支
临时性分支是指暂时存在的分支,当该分支的功能完成以后,合并到主分支上,就可以删除这些分支。具体有功能分支、修复分支、预发布分支。
功能分支
功能分支就是专门负责一个功能的开发。首先从dev分支分出来,然后完成一个功能后,再并入dev分支,最后,就可以删除该分支。命名采用 feature-* 的形式。
#创建一个新分支 $ git checkout -b feature-x dev #在开发完成后,合并到dev分支 $ git checkout dev $ git merge --no-ff feature-x #删除feature分支 $ git branch -d feature-x
修复分支
修复分支是用来对bug进行修复。修复分支从master分支上分出来,修复完成以后,在合并到master和dev分支。命名采用 hotfix-* 形式。
#创建一个修复bug的分支 $ git checkout -b hotfix-x master #修复结束后,合并到master分支 $ git checkout master #切换到master分支 $ git merge --no-ff hotfix-x #合并hotfix分支 $ git tag -a 0.1 #为主分支添加标签 #再合并到dev分支 $ git checkout dev $ git merge --no-ff hotfix-x # 删除分支 $ git branch -d hotfix-x
预发布分支
预发布分支是指正式版发布之前,预先发布一个版本进行测试,在完成后,就可以删除该分支。预发布分支是从dev分出来的,预发布结束以后,合并进dev和master分支。命名可以采用release-x的形式。
# 创建一个预发布分支 $ git checkout -b release-1.0 dev #确认没有问题以后,合并到master分支 $ git checkout master $ git merge --no-ff release-1.0 $ git tag -a 1.0 #合并以后,做一个标签 #再合并到dev分支 $ git checkout dev $ git merge --no-ff relase-1.0 #最后删除该分支 $ git branch -d release-1.0
关于以上分支的一种示意图