Git是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。
Git Flow是构建在Git之上的一个组织软件开发活动的模型,是在Git之上构建的一项软件开发最佳实践。
Git Flow是一套使用Git进行源代码管理时的一套行为规范和简化部分Git操作的工具。
2010年5月,在一篇名为“一种成功的Git分支模型”的博文中,@nvie介绍了一种在Git之上的软件开发模型。
通过利用Git创建和管理分支的能力,为每个分支设定具有特定的含义名称,并将软件生命周期中的各类活动归并到不同的分支上。
实现了软件开发过程不同操作的相互隔离。这种软件开发的活动模型被nvie称为“Git Flow”。
一般而言,软件开发模型有常见的瀑布模型、迭代开发模型、以及最近出现的敏捷开发模型等不同的模型。每种模型有各自应用场景。
Git Flow重点解决的是由于源代码在开发过程中的各种冲突导致开发活动混乱的问题。因此,Git flow可以很好的于各种现有开发模型相结合使用。
http://nvie.com Vincent Driessen 文森特.德里森
主要分支
master: 永远处在production-ready状态
develop: 最新的下次发布开发状态
临时性分支
feature branches: 开发新功能都从develop分支出来,完成后merge回develop
release branches: 准备要release的版本,只修bugs。从develop分支出来,完成后merge回master和develop
hotfix branches: 等不及release版本,必须马上修master上线bugs的情况。会从master分支出来,完成后merge回master和develop
Git Flow模型全图
feature
开始一个新功能:
git flow feature start xxxx
提交这个功能到远程库:
git flow feature publish xxxx
完成功能,合并到develop:
git flow feature finish xxxx
删除远程仓库里的分支:
git push origin :xxxx
release
git flow release start release-v1.0
git flow release finish release-v1.0
Hotfix
(1) 切到master分支
git checkout master
(2) 更新代码,保证本地的master代码是最新的
git pull --rebase
(3) 新建hotfix分支,也就是在这个分支上写代码,此分支就是一个本地分支,xxx是分支的名称,可以用来描述你修复的bug,例如:fix_account_bugs
git flow hotfix start xxx
(4) 代码写好,本地测试没问题,所有单元测试都通过,这时可以提交修改的文件,强烈建议使用IDE的可视化工具提交代码,因为你可以看到diff,更直观!下面命令仅供参考。
git add xxx.java
git commit -m "fix bug"
(5) 步骤4可能会不断重复,直到最终修改和测试完成后,结束hotfix以供发布,此步骤很关键,执行下面命令后,会有几次交互界面,跟vi的操作一样,需要insert,然后输入一些备注,来描述你本次修改,然后:wq来保存即可。
git flow hotfix finish xxx
(6) 如果没有冲突,说明你很幸运,操作完第5步,此时你应该在develop分支上,可以通过git branch查看当前分支,接下来建议你切到master分支,push代码到服务器上,因为hotfix是为了修复线上bug,线上的代码是来自 master的,先把问题修复,保证上线,然后回来再看develop上的问题。
git checkout master
(7) 发布最终的master分支,这时候CI服务器会自动编译打包你的代码,等待打包完毕,重启UAT的服务,就可以通知测试人员去测试了,如果测试有问题,那请从第一步重复吧。。。。
git push origin master
(8) 切换到develop,去push代码
git push origin develop
(9)创建TAG
创建
git tag v1.0
git tag -a v2.0 -m 'v2.0 released'
显示 git show v1.0
搜索 git tag -l '?2*'
推送
git push origin v1.0
git push origin --tags
git push origin refs/tags/v8.0:refs/tags/v8.0
删除本地
git tag -d v5.0
删除远程
git push origin :refs/tags/6.0
git push origin --delete tag v5.0
拉到本地
git fetch origin tag v8.0
最后推荐大家一款客户端工具Tower 超级好用 Mac破解版下载地址
http://download.csdn.net/download/yshr1991/9913522