git flow代码管理及分支创建合并

一、git flow介绍

1、master(主分支)

主分支,存放经过测试,已经完全稳定的代码,即其放的代码是可随时直接上生产使用的代码。主分支不允许提交代码,release分支经过充分测试后,打tag版本号并合并到master分支

2、develop(开发分支)

开发分支,一开始从master分支中分离出来,用于开发者存放基本稳定代码

3、feature(功能分支)

功能分支,每次开发新功能时候从develop中fork出来一个feature分支,分支名可以采用feature/*的形式命名,如:feature/需求编号-日期,feature/31124-190618,开发完成合并到develop分支,不用时可以将其删除

4、release(预发分支)

预发分支,发布正式版本之前,需要一个预发布的版本进行测试,预发分支一般从从develop拉出,release分支版本命名规范:由4个数字段表示,大版本. Release版本.Hotfix版本.YYmmdd,如release/2.2.0.190403,预发布结束以后,打tag并合并进Develop和Master分支

5、hotfix(修补bug分支)

修补bug分支,若遇到生产出现bug,需要紧急修复,确定对应的release版本后,从master拉出一个hotfix分支,修改完成测试后打tag合并到develop和master分支,如分支名 hotfix/2.2.0.190411。

二、git分支创建与合并

创建分支

如创建feature/31124-190618分支,从develop上,创建并切换feature分支:

$ git checkout  develop              #切换到dev分支
$ git checkout -b feature/31124-190618  #创建并切换到feature/31124-190618分支

把创建的分支feature推送远程仓库:

 $ git push -u origin feature/31124-190618

合并分支:

如把feature/31124-190618分支合并到develop 分支

先切换分支: $ git checkout develop  

再合并分支:$ git merge --no-ff feature/31124-190618

最终推送到远程仓库:$ git push origin develop

三、举例说明

假如开发一个“评论“”功能

1、 克隆现有仓库
    $ git clone http://git.uwscloud.com/uws/uws-data.git

2、创建并切换到feature/31124-190618分支

git checkout  develop #切换到dev分支
git checkout -b feature/31124-190618 #创建并切换到feature/31124-190618分支

git push -u origin feature/31124-190618 #把创建的分支推送到远程仓库

3、开发过程中,定期把dev代码合并到feature分支,feature分支始终保持最新代码

git checkout feature/31124-190618 #切换到feature/31124-190618分支

git merge --no-ff develop #把dev代码合并大feature

4、开发完成提交

git add .

git commit -m 'finish discuss feature'

 5、开发完成,提交测试,从develop中fork出release,并把feature合并到release,在release上测试并修改bug

git checkout  develop #切换到dev分支
git checkout -b release/2.2.0-190618 #创建并切换到release/2.2.0-190618分支

git merge --no-ff feature-31124-190618 #把开发完成的feature分支合并到release/2.2.0-190618

6、直接上线测试通过的release版本,上线后把将release合并到develop和master

#保持release本地最新
git pull release/2.2.0-190618

#release合并到develop并push到远程
git checkout develop
git pull develop
git merge --no-ff release/2.2.0-190618
git push
#release合并到master并push到远程
git checkout master
git pull master
git merge --no-ff release/2.2.0-190618
git push

9、对合并生成的新节点,打一个tag

# 对合并生成的新节点,做一个标签
git tag -a release/2.2.0-190618
git push --tags #push到远程

#没用可以删除release
git branch -d release/2.2.0-190618
git push origin --delete release/2.2.0-190618

10、线上出问题,创建一个修补bug分支

git checkout master
git checkout -b hotfix/2.2.0-190618

11、bug解决后,hotfix合并到develop和master分支

#hotfix合并到develop并push到远程
git checkout develop
git pull develop
git merge --no-ff hotfix/2.2.0-190618
git push

#hotfix合并到master并push到远程
git checkout master
git pull master
git merge --no-ff hotfix/2.2.0-190618
git push

# 打tag
git tag -a hotfix/2.2.0-190618  #在当前分支上打一个tag
git tag -a hotfix/2.2.0-190618 be6fabcd #在当前分支的某个提交上打一个tag
git push --tags  #将当前分支及所有新打的tag推送远程仓库

 

参考:http://www.ruanyifeng.com/blog/2012/07/git.html

参考:https://blog.csdn.net/aaaaaaliang/article/details/79451598

你可能感兴趣的:(Git)