前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >GitFlow 代码管理模型实战

GitFlow 代码管理模型实战

作者头像
耕耘实录
发布2021-03-20 14:43:28
5900
发布2021-03-20 14:43:28
举报
文章被收录于专栏:耕耘实录

GitFlow 代码管理模型实战

一 概述

Git Flow定义了一个项目发布的分支模型,为管理具有预定发布周期的大型项目提供了一个健壮的框架。

master分支存放所有正式发布的版本,可以作为项目历史版本记录分支,不直接提交代码。仅用于保持一个对应线上运行代码的 code base。

develop分支为主开发分支,不直接提交代码。

feature分支为新功能分支,feature分支都是基于develop创建的,开发完成后会合并到develop分支上。同时存在多个。

release分支基于最新develop分支创建,当新功能足够发布一个新版本(或者接近新版本发布的截止日期),从develop分支创建一个release分支作为新版本的起点,用于测试,所有的测试bug在这个分支改。测试完成后合并到master并打上版本号,同时也合并到develop,更新最新开发分支。(一旦打了release分支之后不要从develop分支上合并新的改动到release分支),同一时间只有1个,生命周期很短,只是为了发布。

hotfix分支基于master分支创建,对线上版本的bug进行修复,完成后直接合并到master分支和develop分支,如果当前还有新功能release分支,也同步到release分支上。同一时间只有1个,生命周期较短。

整体流程图
整体流程图

简化的流程图:

Gitflow模型1
Gitflow模型1
Gitflow模型2
Gitflow模型2

二 操作步骤

2.1 克隆远程仓库到本地

代码语言:javascript
复制
git clone http://mrivandu@127.0.0.2:8888/demo/GitFlow.git
git config credential.helper store # 记住密码,后续提交无需再次输入密码。

2.2 配置提交用户信息

进入仓库所在目录,配置用户信息。用户信息包括用户名及邮箱,如果是全局配置,加上–global选项。

代码语言:javascript
复制
git config user.name "mrivandu"
git config user.email "mrivandu@hotmail.com"

2.3 develop 分支

develop 分支与 master 分支如下图:

develop 分支与 master 分支
develop 分支与 master 分支
代码语言:javascript
复制
git add .
git commit -m "init"
git branch develop  master
git push -u origin develop

2.4 feature 分支

提交流程如图:

feature 分支
feature 分支

通过develop新建feaeure分支

代码语言:javascript
复制
git checkout -b feature develop

feature 分支可以只存在本地仓库,也可以推送至远程服仓库:

代码语言:javascript
复制
git push -u origin feature

在本地仓库修改相关文件:

代码语言:javascript
复制
git status
git add .
git commit -m "modify"

完成 feature 分支的开发后,合并到 develop 分支

代码语言:javascript
复制
git pull origin develop
git checkout develop
#--no-ff:不使用fast-forward方式合并,保留分支的commit历史
#--squash:使用squash方式合并,把多次分支commit历史压缩为一次
git merge --no-ff feature
git push origin develop

feature 分支合并到 develop 后,删除本地分支(也可以保留不删除):

代码语言:javascript
复制
git branch -d some-feature

如需删除远程feature分支:

代码语言:javascript
复制
git push origin --delete feature

2.5 release 分支

提交流程如图:

release 分支
release 分支

检出 release 分支:

代码语言:javascript
复制
git checkout -b release-0.1.0 develop

完成 release 分支的开发,合并回 master 分支和 develop 分支:

代码语言:javascript
复制
git checkout master
git merge --no-ff release-0.1.0
git push
git checkout develop
git merge --no-ff release-0.1.0
git push

删除本地 release 分支(亦可保留):

代码语言:javascript
复制
git branch -d release-0.1.0

删除远程仓库 release 分支(亦可保留):

代码语言:javascript
复制
git push origin --delete release-0.1.0   

合并 master/devlop 分支之后,打 tag:

代码语言:javascript
复制
git tag -a v0.1.0 master -m "demo version"
git push --tags

2.6 hotfix 分支

提交流程如图:

hotfix 分支
hotfix 分支

完成 hotfix 分支,合并至 master 分支:

代码语言:javascript
复制
git checkout -b hotfix-0.1.1 master
git checkout master
git merge --no-ff hotfix-0.1.1
git push

完成 hotfix 分支,合并至 develop 分支:

代码语言:javascript
复制
git checkout develop
git merge --no-ff hotfix-0.1.1
git push

删除 hotfix 分支:

代码语言:javascript
复制
git branch -d hotfix-0.1.1
git push origin --delete  hotfix-0.1.1  # 如果本地已向 远程仓库推送,可以使用该命令删除远程 hotfix 分支

完成 hotfix,打 tag:

代码语言:javascript
复制
git tag -a v0.1.1 master
git push --tags
# 删除本地 tag: git tag -d v0.1.1
# 删除远程 tag:git push origin :refs/tags/v0.1.1
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/03/05 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • GitFlow 代码管理模型实战
    • 一 概述
      • 二 操作步骤
        • 2.1 克隆远程仓库到本地
        • 2.2 配置提交用户信息
        • 2.3 develop 分支
        • 2.4 feature 分支
        • 2.5 release 分支
        • 2.6 hotfix 分支
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档