下面是GitFlow的流程图
GitFlow常用的分支
-
Production分支
也就是我们经常使用的Master分支,这个分支最近发布到生产环境的代码,最近发布的Release,这个分支只能从其他分支合并,不能在这个分支直接修改
-
Develop分支
这个分支是我们是我们的主开发分支,包含所有要发布到下一个Release的代码,这个主要合并与其他分支,比如Feature分支
-
Feature分支
这个分支主要是用来开发一个新的功能,一旦开发完成,我们合并回Develop分支进入下一个Release
-
Release分支
扫描二维码关注公众号,回复: 5036576 查看本文章
当你需要一个发布一个新Release的时候,我们基于Develop分支创建一个Release分支,完成Release后,我们合并到Master和Develop分支
-
Hotfix分支
当我们在Production发现新的Bug时候,我们需要创建一个Hotfix,完成Hotfix后,我们合并回Master和Develop分支,所以Hotfix的改动会进入下一个Release
GitFlow如何工作
初始分支
所有在Master分支上的Commit应该Tag
Feature分支
分支名 feature/*
Feature分支做完后,必须合并回Develop分支,合并完分支后一般会删点这个Feature分支,但是我们也可以保留
Release分支
分支名 release/*
Release分支基于Develop分支创建,打完Release分之后,我们可以在这个Release分支上测试,修改Bug等。同时,其它开发人员可以基于开发新的Feature(记住:一旦打了
Release分支之后不要从Develop分支上合并新的改动到Release分支)
发布Release分支时,合并Release到Master和Develop,同时在Master分支上打个Tag记住Release版本号,然后可以删除Release分支了。
维护分支 Hotfix
分支名 hotfix/*
hotfix分支基于Master分支创建,开发完后需要合并回Master和Develop分支,同时在Master上打一个tag
GitFlow代码示例
a.创建develop分支
gitbranch develop(创建分支)
gitbranch(查看本地所有分支)
gitbranch-a(查看所有分支)
gitflow init –d(初始化)
gitpushorigin develop(从本地推送到远程)
b.开始新Feature开发
gitflow feature start login(创建分支)
或gitcheckout -b feature/login develop(创建分支)
#做一些改动
gitstatus
gitadd some-file
gitcommit(提交)
c.完成Feature
gitpushorigin feature/login(推送到远程)
gitcheckout develop/master(切换分支)
gitpull origin develop(下拉代码)
gitmerge--no-fffeature/login
gitpush origin develop(推送)
gitflow feature finish login(分支本地完成自动合并到develop并删除)
gitbranch -dfeature/login
#Ifyou pushed branch toorigin:
gitpush origin--deletefeature/login
d.开始Relase
gitflow release start 1.0.0 (创建预发布版本)或
gitcheckout -brelease-1.0.0develop(创建预发布版本)
#Optional: Bumpversionnumber,commit
#Preparerelease,commit
e.完成Release
gitcheckout master
gitmerge--no-ffrelease-0.1.0
gitpush
gitcheckout develop
gitmerge--no-ffrelease-0.1.0
gitpush
gitbranch -drelease-0.1.0
#Ifyou pushed branch toorigin:
gitpush origin--deleterelease-0.1.0
gittag -a v0.1.0master
gitpush--tags
f.开始Hotfix
gitcheckout-bhotfix-0.1.1master
g.完成Hotfix
gitcheckoutmaster
gitmerge--no-ffhotfix-0.1.1
gitpush
gitcheckoutdevelop
gitmerge--no-ffhotfix-0.1.1
gitpush
gitbranch-dhotfix-0.1.1
gittag-av0.1.1master
gitpush--tags
平时一些常用的git命令如下:
一、远程仓库有 master 和 dev 分支
1. 克隆代码gitclone https://github.com/master-dev.git
#这个git路径是无效的,示例而已
2.查看所有分支
gitbranch --all
#默认有了dev和master分支,所以会看到如下三个分支
#master[本地主分支]origin/master[远程主分支]origin/dev[远程开发分支]
#新克隆下来的代码默认master和origin/master是关联的,也就是他们的代码保持同步
#但是origin/dev分支在本地没有任何的关联,所以我们无法在那里开发
3.创建本地关联origin/dev的分支
gitcheckout dev origin/dev
#创建本地分支dev,并且和远程origin/dev分支关联,本地dev分支的初始代码和远程的dev分支代码一样
4.切换到dev分支进行开发
gitcheckout dev #这个是切换到dev分支,然后就是常规的开发
5.为了更好的理解,最好继续看看下文。
二、假设远程仓库只有 mater 分支
1. 克隆代码gitclone https://github.com/master-dev.git
#这个git路径是无效的,示例而已
2.查看所有分支
gitbranch --all
#默认只有master分支,所以会看到如下两个分支
#master[本地主分支]origin/master[远程主分支]
#新克隆下来的代码默认master和origin/master是关联的,也就是他们的代码保持同步
3.创建本地新的dev分支
gitbranch dev #创建本地分支
gitbranch #查看分支
#这是会看到master和dev,而且master上会有一个星号
#这个时候dev是一个本地分支,远程仓库不知道它的存在
#本地分支可以不同步到远程仓库,我们可以在dev开发,然后merge到master,使用master同步代码,当然也可以同步
4. 发布 dev 分支
发布 dev 分支指的是同步 dev 分支的代码到远程服务器gitpush origin dev:dev #这样远程仓库也有一个dev分支了
5.在dev分支开发代码
gitcheckout dev #切换到dev分支进行开发
#开发代码之后,我们有两个选择
#第一个:如果功能开发完成了,可以合并主分支
gitcheckout master #切换到主分支
gitmerge dev #把dev分支的更改和master合并
gitpush #提交主分支代码远程
gitcheckout dev #切换到dev远程分支
gitpush #提交dev分支到远程
#第二个:如果功能没有完成,可以直接推送
gitpush #提交到dev远程分支
#注意:在分支切换之前最好先commit全部的改变,除非你真的知道自己在做什么
6.删除分支
gitpush origin :dev #删除远程dev分支,危险命令哦
#下面两条是删除本地分支
gitcheckout master #切换到master分支
gitbranch -d dev #删除本地dev分支