git版本控制开发流程小结笔记(二)

接前篇git版本控制开发流程小结笔记(二),我们接着展示其他的开发流程。

分支管理策略

预发

那么接下来,完成了几个功能点的开发之后,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




好了,一切大功告成。让我们来看一下分支节点网络图。

git版本控制开发流程小结笔记(二)_第1张图片

由图可见,develop,master,release1三个分支的head已经指向同一个节点,work tree已经保持一致。

线上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版本控制开发流程小结笔记(二)_第2张图片

总结

总得而言,博主认为git的开发流程还是非常清晰简单的,由于git方便的branch机制,我们可以不像以前使用svn那样单纯的整个项目 copy的方法去拉分支进行开发,同时清晰的节点网络图也更加有利于项目的迭代。因此再也不会svn混乱了目录结构和开发流程而让项目的熵值越来越大 了!!

你可能感兴趣的:(git版本控制开发流程小结笔记(二))