git 操作规范
分支描述
长期存在
- online
- 主分支,负责记录上线版本的迭代,该分支代码与线上代码是完全一致的。
- dev
- 开发分支,该分支记录相对稳定的版本,所有的feature分支都从该分支创建。
- 多套开发环境是,命名规范:dev1、dev2
- test
- 测试分支,用于代码上线准备,该分支从dev分支创建,创建之后由测试同学发布到测试环境进行测试,测试过程中发现bug需要开发人员在dev分支上进行bug修复,测试通过以后再合并到test分支,由测试发布到测试环境。在上线之前,需要合并该test分支到online分支。
- 多套测试环境是,命名规范:test1、test2
- online
上线后删除
- feature
- 功能分支,用于开发新的功能,不同的功能创建不同的功能分支,功能分支开发完成并自测通过之后,需要合并到dev分支,之后删除该分支。
- 命名规范:feature/*,比如:feature/tie。(建议英文,拼音也可以)
- hotfix
- 紧急bug修复分支,该分支只有在紧急情况下使用,从online分支创建,用于紧急修复线上bug,修复完成后,需要合并该分支到online分支以便上线,同时需要再合并到dev分支。
- 命名规范:hotfix/*,比如:hotfix/fenan(建议英文,拼音也可以)
- bugfix(不常用)
- bug修复分支,用于修复不紧急的bug,普通bug均需要创建bugfix分支开发,开发完成自测没问题后合并到dev分支后,删除该分支。
- 命名规范:bugfix/*,比如:hotfix/mobile (建议英文,拼音也可以)
- feature
分支合并流程介绍
开发
- 根据功能排期,从dev分支创建feature(功能)分支(组长统一创建、管理),比如:tie、bujian。
- 联调测试,把feature(功能)分支通过rebase合并到dev分支。
提测
- 提测时把dev分支通过rebase合并到test分支。
上线
- 上线把test分支通过rebase合并到online分支。
上线以后
- 删除所有feature、hotfix、bugfix分支。
- 删除dev分支,并且从online分支创建dev分支。
操作规范
git checkout online //切换到online分支
git branch -D dev //删除本地dev分支
git push origin :dev //删除远程dev分支
git checkout -b dev //创建本地dev分支
git push origin dev:dev //创建远程dev分支
- 删除test分支,并且从dev分支创建test分支。
操作规范
git checkout dev //切换到dev分支
git branch -D test //删除本地dev分支
git push origin :test //删除远程test分支
git checkout -b test //创建本地dev分支
git push origin test:test //创建远程test分支
紧急生产bug
- 新建hotfix/*分支,验收通过以后,把hotfix/*分支rebase到dev和online分支,之后删除hotfix分支。
一般生产bug(不常用)
新建bugfix/*分支,验收通过以后,把bugfix/*分支rebase到dev分支,之后删除bugfix分支。
二、分支操作常用命令
本地操作
git add -A #添加文件
git reset . #取消添加文件
git status # 查看状态
git commit [-a] -m "更新说明" #提交更新,-a为包含内容修改和增删,-m为说明信息,也可以使用 -am。
git reset HEAD^ #取消掉本次的提交
dev分支开发
git add -A
git commit -m "更新说明"
git fetch origin dev
git rebase origin/dev #fetch和rebase可以用这条命令替换 git pull --rebase origin dev
# 如果有冲突,修改冲突
git add .
git rebase --continue #继续合并,如果有异常递归操作
git rebase --abort #终止合并
git rebase --skip #跳过本次commit合并
git push origin dev:dev #提交代码
分支管理
# 当前分支为:dev
git branch -a #查看分支信息
git branch test #创建test本地分支,test分支和当前本地dev代码一样
git push origin test:test #把本地分支推送远程仓库,并且创建远程test分支
git branch -d test #删除本地分支
git push origin :test #删除远程仓库test分支
git checkout -b test origin/test # 创建本地test,获取远程仓库test分支最新代码
test分支合并dev分支
git checkout test #先切换到test分支
git pull --rebase origin dev
git pull --rebase origin test
git push origin test:test
tag管理
git tag -a v1.0.0 -m 'version1.0.0' #创建tag
git push origin --tags #提交tag
git tag -d v1.0.0 #删除本地tag
git push origin :refs/tags/v1.0.0 #删除远程仓库tag
获取test分支最新代码
git fetch --all
git reset --hard origin/test # 本地未push代码都删除
git 操作规范的更多相关文章
- [No0000176]Git常用命令速查表(收藏大全)
名词 master: 默认开发分支 origin: 默认远程版本库 Index / Stage:暂存区 Workspace:工作区 Repository:仓库区(或本地仓库) Remote:远程仓库 ...
- 学习笔记之Git / Gitflow / TortoiseGit
Git - Wikipedia https://en.wikipedia.org/wiki/Git Git (/ɡɪt/) is a version control system for tracki ...
- Mysql高性能优化规范建议
数据库命令规范 所有数据库对象名称必须使用小写字母并用下划线分割 所有数据库对象名称禁止使用mysql保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来) 数据库对象的命名要能做到见名识意 ...
- Scrum冲刺_Day02
一.团队展示: 1.项目:light_note备忘录 2.队名:删库跑路队 3.团队成员 队员(不分先后) 项目角色 黄敦鸿 后端工程师.测试 黄华 后端工程师.测试 黄骏鹏 后端工程师.测试 黄源钦 ...
- Git Flow 分支管理简述
概述 Git 是什么 Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目. Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的 ...
- 【原理、命令】Git基本原理、与Svn的区别、命令
一.Git是什么? Git是目前世界上最先进的分布式版本控制系统.工作原理 / 流程:Workspace:工作区Index / Stage:暂存区Repository:仓库区(或本地仓库)Remote ...
- Git的原理简介和常用命令
Git和SVN是我们最常用的版本控制系(Version Control System, VCS),当然,除了这二者之外还有许多其他的VCS,例如早期的CVS等.顾名思义,版本控制系统主要就是控制.协调 ...
- Git学习总结(5)——搭建Git简易高效服务器
1. mysysgit+gitblit安装流程 1.1资源 需先下载好的资源(公司用的1.6,1.7+请自行匹配对应的mysysgit+gitblit): jdk1.6 Git-1.8.4-pr ...
- git基本原理
git基本原理 一.总结 一句话总结:把原理那张图图背下来 1.git中的四大区,除了远程仓库和本地仓库,剩下两个是什么? 解答:工作区和暂存区. 2.git中的四大区(例如远程仓库和本地仓库),他们 ...
随机推荐
- One VS Rest
简单来说就是分类的类别有多个,不再是二分,比如根据某些特征,什么温度.湿度.空气流动情况来预测天气,天气的label不能说是好天气和坏天气两种,而是分晴天.雨天.阴天,雪天等等,对于决策树或者从计算机 ...
- [openjudge-搜索]城堡问题(The Castle)
题目描述 描述 图1是一个城堡的地形图.请你编写一个程序,计算城堡一共有多少房间,最大的房间有多大.城堡被分割成mn(m≤50,n≤50)个方块,每个方块可以有0~4面墙. 输入 程序从标准输入设备 ...
- 时间序列预测——Tensorflow.Keras.LSTM
1.测试数据下载 https://datamarket.com/data/set/22w6/portland-oregon-average-monthly-bus-ridership-100-janu ...
- Kubernetes与容器设计模式
目录贴:Kubernetes学习系列 在程序设计领域,面向对象设计和面向对象语言是大家最为熟悉和强大的工具,而面向对象除了其强大的核心特性之外,还有人们通过实践总结出来的一系列设计模式,可以用来解决实 ...
- django开发(二)
1.django数据库操作---model的使用以及django自带的数据api django中已经做了ORM,表就是一个类class,表中的一个项就是一个对象object,很好用 1.1django ...
- Objective-C不能以new开头命名属性
ARC是在Xcode4.2推出的方便内存管理的一个特性,支持OS10.6及iOS4以后版本.引入ARC之后,相对应的内存管理使用方面做了必要的调整,这里不一一赘述:其中有一项就是文章题目说的,为了与手 ...
- opencv学习之路(20)、直方图应用
一.直方图均衡化--equalizeHist() #include "opencv2/opencv.hpp" using namespace cv; void main() { 6 ...
- ant常用的内置 task转自https://www.cnblogs.com/baicj/archive/2015/12/21/5063608.html
ant 例如: <target name="callProjectB"> <echo message="In projectA calling proj ...
- 关于ComponentOne For WinForm 的全新控件 – DataFilter数据切片器(Beta)
概述 数据切片器在电子商务网站上很常见 - 它们可以帮助用户快速过滤所选商品,并且所有过滤选项都可以在一个地方使用,通常包含核心控件类型为:清单,范围栏和单选按钮等.在ComponentOne For ...
- Hadoop数据类型
hadoop包装了java的基本数据类型使他们实现以上的接口而且给予实现细节,这些类都实现了WritableComparable接口,能够在不同的hadoop节点之间毫无障碍的传输了.