git --- 开发时关于git分支控制的一些心得(master-hotfix-develop-release)
2019-02-21 01:41
134 查看
项目代码正在重构,原来为了个人开发方便,都是从master分支(或一个中间分支)上建立一个自己的分支用于开发,开发完毕后将自己的分支merge到master分支(或一个中间分支),结束自己的分支。
在大量的提交后,会导致一些问题:
- 并没有版本上的控制,看起来就像一个版本一直在开发一样,不存在一个稳定的版本分支(或者master分支落后很多)。
- 个人的分支没有得到很好的测试,合并到master分支上可能有一些隐藏bug,导致master分支一直都处于不稳定的状态,出现棘手的问题时无法回退到一个稳定版本。
- 每个人的开发进度不一样,在merge到master分支时导致很多冲突。
- 在排查错误时,由于merge参数不统一导致master分支上有超级多的commit,只能在master分支上一点一点的回退版本,执行起来很麻烦。
- 个人的分支上传到GitHub上,导致远程仓库的分支杂乱无章。
参考了一个成功的git分支模型,对现在的git分支管理进行一些调整,便于规范开发。以本人目前开发的项目为例,项目名是visom-server。
- 一共有五种分支:master、hotfix、develop、release、self分支。master分支是一个主分支,主要提供一个稳定的版本,时刻都是稳定的保证随时可以上线应用。develop分支是一个和master分支并行的分支,用于主开发的分支。hotfix分支是热修复分支,主要用于修复master分支出现的意料之外的bug,属于临时分支,命名以"hotfix-xxx"为准。release分支是发布版本分支,在develop开发完成后做一些版本信息的或细节调整的分支,也属于临时分支,命名以"release-xxx"为准,xxx表示版本号。self分支是个人开发用的分支,命名无特殊要求。
- master、develop分支是核心分支,是并行的一直存在在远程仓库的分支,分别提供稳定版本和主开发的作用。下面说一下完整的开发流程。整个流程相对于上面的参考博客比较,关于版本号的自动创建、规范以及其他版本相关的内容还没有完全吃透,所以对这部分和不适合本人公司开发情况的会有些删减,大家可以多提供意见,谢谢。(本人是使用vscode开发的,有些命令可以用vscode功能代替,比如创建、切换分支等)
master、develop分支
- 首先基于master分支建立一个develop分支,并将develop分支push到远程仓库里,做为开发的核心分支。
>git checkout -b develop master >git push
- 基于develop分支建立自己的分支,做一些开发改动,完成后merge到develop分支而不是master分支。develop分支上有每一次改动提交的记录,所以注意merge时的参数。
>git checkout -b zhengsy develop // 基于develop分支创建并切换到zhengsy分支(自己开发的分支) >git commit -a -m '修复project.index传参bug' //开发代码后,将所有改动储存到本地并加以描述(分多次提交) >git checkout develop // 切换到develop分支 >git merge --no-ff zhengsy //将zhengsy分支毫无保留的融合到develop分支 >git branch -d zhengsy // 删除zhengsy分支 // 整个过程中自己的分支并没有推送到远程仓库只存在与自己的本地。 // 如果有问题需要协助请推送到远程仓库,最后完成开发任务时请删除远程分支。
hotfix分支
master分支遇到紧急修复的bug时,请使用hotfix分支。hotfix分支也不会出现在远程仓库,只是一个本地的临时分支,融合时请保留提交记录。具体流程如下:
>git checkout -b hotfix-indexbug master // 基于master分支建立一个hotfix-indexbug分支,用于紧急修复 >git commit -a -m '修复index传参bug' // 修复后,将所有改动储存到本地并加以描述(因为master分支是稳定的出现bug,也改动不大,一次性提交即可) > >更新master分支!!!! >git checkout master // 切换到master分支(版本是v1.0.0) >git merge --no-ff hotfix-indexbug // 将hotfix-indexbug分支融合到master分支 >git tag -a v1.0.1 -m '修复index的bug' // 在本地有打一个版本的标签。(作用不是很明显) > >更新develop分支!!!! >git check develop // 切换到develop分支 >git merge --no-ff hotfix-indexbug // 将hotfix-indexbug分支融合到develop分支 > >删除hotfix分支 >git branch -d hotfix-indexbug
release分支(暂时作用不明显)
develop分支完成了版本升级任务,即可以给master分支提供下一个稳定版本时,请使用release分支。可能因为develop分支已经完成了该版本开发任务,可以执行下一个开发版本任务了,但为了使开发人员和版本维护人员可以并行,即开发人员继续使用develop分支开发下一个版本,版本维护人员使用release分支撰写该版本的一些信息和应付一些意料不到的小问题,所以使用release分支作为中转。使用release分支和hotfix分支类似,就不再重复命令了,注意分支命名规范。
有一点需要特殊说明的是,release分支融合到master分支时,请使用–squash参数;release分支融合到develop分支时,请使用–no-ff参数。即:
>// 将release-xxx分支融合到master分支 >git checkout master >git merge --squash release-xxx > >// 将release-xxx分支融合到develop分支 >git checkout develop >git merge --no-ff release-xxx
以上就是本人的一点心得,仍有不完善的地方比如版本说明方面的说明等,感觉版本方面还是使用GitHub上那种的比较好,即完成一个版本就在GitHub上生成一个版本,自己的本地tag更多的是自己方便一些。欢迎大家多提意见。以后有更完善的方案再来补充。
相关文章推荐
- 介绍一个成功的 Git 分支模型(master - hotfix - develop - feature - release)
- GIT分支的一些开发心得
- 关于Git使用的一些心得
- 关于git 分支的使用心得
- 关于WinCE开发的一些心得(2)
- Git 从 master 分支拉新分支开发
- 关于淘宝 TOP 开发 使用的一些心得,问题不断更新中。。。
- Git 关于远程分支的一些操作 fetch push merge
- 关于一些Java开发工具的使用心得(不断更新)
- git----------如何创建develop分支和工作流,以及如何将develop上的代码合并到master分支上
- 【开发手札】关于开发的一些个人心得见解
- 如何使用git将remote master上的内容merge 到自己的开发分支上 & 以及将自己分支的内容merge到remote master上
- 关于git托管的一些心得
- 关于使用Axure RP进行原型开发的一些心得体会
- git分支开发,分支(feature)同步主干(master)代码,以及最终分支合并到主干的操作流程
- 关于分块分页开发的一些心得
- 关于基于git分支开发流程的一点看法
- 关于使用Axure RP进行原型开发的一些心得体会
- 阅读一些关于软件开发本质和开发方法的文章的体会与心得
- 关于Git使用的一些心得