git版本控制开发流程小结笔记(二)
2014-05-29 12:20
1071 查看
接前篇git版本控制开发流程小结笔记(一),我们接着展示其他的开发流程。
为了展示需要,这里写了一个release.config文件,我们假设它就是预发时候的一些环境配置,然后commit掉。
考虑最通常的情况,预发的时候可能遇到一些预发环境下的bug,这个时候我就直接在release分支下进行修复演进,如果bug问题很大,则需要重新并入develop中,拉出新的feature进行开发重构。下面演示直接在release分支下进行bug fixs。假设是1.txt出现了问题,我们将feature1字符串修改为feature1+。
好了,预发环境终于一切正常了,下面就是激动人心的线上发布。这里我们需要将release分支同时并入master分支和develop分支,master分支供线上发布,develop分支供下次开发演进。
好了,一切大功告成。让我们来看一下分支节点网络图。
由图可见,develop,master,release1三个分支的head已经指向同一个节点,work tree已经保持一致。
bug修复完毕,测试通过后我们将分支合并到master和develop中去。
注意这里可能出现的情况就是,由于develop分支仍在开发,所以可能出现hotfix分支合并到develop分支发生冲突的情况,这个时候我就需要处理一下冲突啦。好了,完成这些步骤之后,我们就顺利地修复完了线上bug,一切回归正常。让我们来看一下分支节点网络图。
4. 预发
那么接下来,完成了几个功能点的开发之后,develop分支已经达到了一个可以发布的状态,显然按照传统的流程我们首先要经过一个预发的流程。那我们,我们将最新的develop分支拉出来成为一个release分支,暂且取名为release1。$ git checkout -b release1 Switched to a new branch 'release1' $ echo "some release configurations" >> release.config $ ls 1.txt 2.txt release.config
为了展示需要,这里写了一个release.config文件,我们假设它就是预发时候的一些环境配置,然后commit掉。
$ git add -A $ git commit -m 'release1' [release1 c005f04] release1 1 file changed, 1 insertion(+) create mode 100644 release.config
考虑最通常的情况,预发的时候可能遇到一些预发环境下的bug,这个时候我就直接在release分支下进行修复演进,如果bug问题很大,则需要重新并入develop中,拉出新的feature进行开发重构。下面演示直接在release分支下进行bug fixs。假设是1.txt出现了问题,我们将feature1字符串修改为feature1+。
$ echo "feature1+" > 1.txt $ git add -A $ git commit -m 'release1 bug fix' [release1 661497f] release1 bug fix 1 file changed, 1 insertion(+), 1 deletion(-)
好了,预发环境终于一切正常了,下面就是激动人心的线上发布。这里我们需要将release分支同时并入master分支和develop分支,master分支供线上发布,develop分支供下次开发演进。
$ git checkout master Switched to branch 'master' $ git merge release1 Updating 26a17c8..661497f Fast-forward 1.txt | 1 + 2.txt | 2 ++ release.config | 1 + 3 files changed, 4 insertions(+) create mode 100644 release.config $ git checkout develop Switched to branch 'develop' $ git merge release1 Updating f5cb288..661497f Fast-forward 1.txt | 2 +- release.config | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 release.config
好了,一切大功告成。让我们来看一下分支节点网络图。
由图可见,develop,master,release1三个分支的head已经指向同一个节点,work tree已经保持一致。
5. 线上bug热修复
我们经常会碰到一些线上意想不到的bug,需要紧急修复。这时,我们就直接从master分支拉出hotfixes分支进行修复,这里我们假设线上出现了bug的问题在于1.txt的feature1+字符串的+号,我们需要删除掉+号,我们拉出hotfix1分支进行修改。$ git checkout master Switched to branch 'master' $ git checkout -b hotfix1 Switched to a new branch 'hotfix1' $ echo "feature1" > 1.txt $ git add -A $ git commit -m 'hotfix1' [hotfix1 17692cc] hotfix1 1 file changed, 1 insertion(+), 1 deletion(-)
bug修复完毕,测试通过后我们将分支合并到master和develop中去。
$ git checkout develop Switched to branch 'develop' $ git merge hotfix1 Updating 661497f..17692cc Fast-forward 1.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) $ git checkout master Switched to branch 'master' $ git merge hotfix1 Updating 661497f..17692cc Fast-forward 1.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
注意这里可能出现的情况就是,由于develop分支仍在开发,所以可能出现hotfix分支合并到develop分支发生冲突的情况,这个时候我就需要处理一下冲突啦。好了,完成这些步骤之后,我们就顺利地修复完了线上bug,一切回归正常。让我们来看一下分支节点网络图。
总结
总得而言,博主认为git的开发流程还是非常清晰简单的,由于git方便的branch机制,我们可以不像以前使用svn那样单纯的整个项目copy的方法去拉分支进行开发,同时清晰的节点网络图也更加有利于项目的迭代。因此再也不会svn混乱了目录结构和开发流程而让项目的熵值越来越大了!!相关文章推荐
- git版本控制开发流程小结笔记(一)
- git版本控制开发流程小结笔记(一)
- 《版本控制之道--使用Git》笔记
- Git 系列之一:版本控制的概念、分布式、Git 简介及其工作流程
- git 进行版本控制流程
- iOS版本控制git小结--yoowei
- git 版本控制的整体的流程,实现整体的工程来走一遍实现,理清自己的思路;
- iOS开发——源代码管理——git(分布式版本控制和集中式版本控制对比,git和SVN对比,git常用指令,搭建GitHub远程仓库,搭建oschina远程仓库 )
- Linux内核开发的版本控制工具Git中文教程
- PHP移动互联网开发笔记(3)——运算符与流程控制
- 基于git版本控制团队协作流程
- GIT学习笔记——1.1 起步 - 关于版本控制
- Git 系列之一:版本控制的概念、分布式、Git 简介及其工作流程
- ios开发学习笔记003-流程控制和类型转换
- [分享]Linux内核开发的版本控制工具Git中文教程
- 【Git学习笔记】1.1 - 关于版本控制
- 笔记《版本控制之道--使用Git》
- Git 系列之一:版本控制的概念、分布式、Git 简介及其工作流程-转载
- XCode 开发去除 UserInterfaceState.xcuserstate 文件为版本控制(git、svn)带来的困扰
- 图解SVN开发版本控制和发布流程,Trunk、Tag、Branch的使用