git flow代码管理及分支创建合并
一、git flow介绍
1、master(主分支)
主分支,存放经过测试,已经完全稳定的代码,即其放的代码是可随时直接上生产使用的代码。主分支不允许提交代码,release分支经过充分测试后,打tag版本号并合并到master分支
2、develop(开发分支)
开发分支,一开始从master分支中分离出来,用于开发者存放基本稳定代码
3、feature(功能分支)
功能分支,每次开发新功能时候从develop中fork出来一个feature分支,分支名可以采用feature/*的形式命名,如:feature/需求编号-日期,feature/31124-190618,开发完成合并到develop分支,不用时可以将其删除
4、release(预发分支)
预发分支,发布正式版本之前,需要一个预发布的版本进行测试,预发分支一般从从develop拉出,release分支版本命名规范:由4个数字段表示,大版本. Release版本.Hotfix版本.YYmmdd,如release/2.2.0.190403,预发布结束以后,打tag并合并进Develop和Master分支
5、hotfix(修补bug分支)
修补bug分支,若遇到生产出现bug,需要紧急修复,确定对应的release版本后,从master拉出一个hotfix分支,修改完成测试后打tag合并到develop和master分支,如分支名 hotfix/2.2.0.190411。
二、git分支创建与合并
创建分支
如创建feature/31124-190618分支,从develop上,创建并切换feature分支:
$ git checkout develop #切换到dev分支
$ git checkout -b feature/31124-190618 #创建并切换到feature/31124-190618分支
把创建的分支feature推送远程仓库:
$ git push -u origin feature/31124-190618
合并分支:
如把feature/31124-190618分支合并到develop 分支
先切换分支: $ git checkout develop
再合并分支:$ git merge --no-ff feature/31124-190618
最终推送到远程仓库:$ git push origin develop
三、举例说明
假如开发一个“评论“”功能
1、 克隆现有仓库
$ git clone http://git.uwscloud.com/uws/uws-data.git
2、创建并切换到feature/31124-190618分支
git checkout develop #切换到dev分支
git checkout -b feature/31124-190618 #创建并切换到feature/31124-190618分支
git push -u origin feature/31124-190618 #把创建的分支推送到远程仓库
3、开发过程中,定期把dev代码合并到feature分支,feature分支始终保持最新代码
git checkout feature/31124-190618 #切换到feature/31124-190618分支
git merge --no-ff develop #把dev代码合并大feature
4、开发完成提交
git add .
git commit -m 'finish discuss feature'
5、开发完成,提交测试,从develop中fork出release,并把feature合并到release,在release上测试并修改bug
git checkout develop #切换到dev分支
git checkout -b release/2.2.0-190618 #创建并切换到release/2.2.0-190618分支
git merge --no-ff feature-31124-190618 #把开发完成的feature分支合并到release/2.2.0-190618
6、直接上线测试通过的release版本,上线后把将release合并到develop和master
#保持release本地最新
git pull release/2.2.0-190618
#release合并到develop并push到远程
git checkout develop
git pull develop
git merge --no-ff release/2.2.0-190618
git push
#release合并到master并push到远程
git checkout master
git pull master
git merge --no-ff release/2.2.0-190618
git push
9、对合并生成的新节点,打一个tag
# 对合并生成的新节点,做一个标签
git tag -a release/2.2.0-190618
git push --tags #push到远程
#没用可以删除release
git branch -d release/2.2.0-190618
git push origin --delete release/2.2.0-190618
10、线上出问题,创建一个修补bug分支
git checkout master
git checkout -b hotfix/2.2.0-190618
11、bug解决后,hotfix合并到develop和master分支
#hotfix合并到develop并push到远程
git checkout develop
git pull develop
git merge --no-ff hotfix/2.2.0-190618
git push
#hotfix合并到master并push到远程
git checkout master
git pull master
git merge --no-ff hotfix/2.2.0-190618
git push
# 打tag
git tag -a hotfix/2.2.0-190618 #在当前分支上打一个tag
git tag -a hotfix/2.2.0-190618 be6fabcd #在当前分支的某个提交上打一个tag
git push --tags #将当前分支及所有新打的tag推送远程仓库
参考:http://www.ruanyifeng.com/blog/2012/07/git.html
参考:https://blog.csdn.net/aaaaaaliang/article/details/79451598
相关文章
- git代码合并:Merge、Rebase的选择
- 云图说|Git云上仓库哪家好?一张图了解华为云代码托管服务
- 【云小课】版本管理发展史之Git+——代码托管
- git用.gitignore忽略指定文件
- 本地代码推送到远程git仓库
- 配置文件git config介绍
- 在Windows下使用Git+TortoiseGit+码云管理项目代码
- Git 更改远程地址
- git 一般的开发流程中的代码管理
- 解决每次git pull需要不用输入用户名信息
- 每一行代码都有记录—如何用git一步步探索项目的历史
- git批量删除文件和批量提交
- 简单使用Git和Github来管理自己的代码和读书笔记
- [Git 系列] WIN7下Git的安装
- git 拉代码超时被取消
- git clone 指定分支 拉代码
- 【Git】IntelliJ IDEA 提交代码到 GitCode 远程仓库 ( GitCode 创建远程仓库 | 将本地工程推送到 GitCode 远程仓库 | 验证权限 | 生成个人访问令牌 )
- git 命令拉取提交代码时都需要输入账号密码
- git代码冲突
- git入门:git常用命令 | 代码的拉取、修改、提交、推送命令及原理
- HackTheBox Vessel Git文件代码审计,Node.js登录身份验证绕过,CVE-2022-24637利用,python反编译和CVE-2022-0811提权