Git多人协同开发紧急修复线上bug操作指南

目录
  • 使用场景
  • 解决思路
  • 操作流程
  • 附录:Git使用的小技巧
    • Git命令别名
  • 总结

使用场景

  • 团队协同开发时,生产环境出现bug,需要紧急修复。
  • 每位同学在本地开发,对应本地的dev分支,本地测试通过后提交到测试环境的dev分支。
  • 测试环境有其他同学提交的代码,正在测试中,无法提交到生产环境的master分支。
  • 以上情况导致我们不能在本地基于dev分支修复bug,因为会和其他同学提交的测试中的代码“撞车”,导致无法及时提及到生产环境。
  • 这个时候如何正确使用Git管理代码呢?

解决思路

  • 首先我们从master拉取最新代码到本次创建临时分支
  • 在本地紧急修复代码,进行测试,测试无误后merge热修复代码到dev分支
  • 本地merge测试分支和本地热修复分支的代码,有冲突解决冲突,提交代码(保证紧急更新的代码能及时被其他同学拉取到)
  • 测试环境进行测试
  • 测试无误后切换到master分支,merge紧急修复分支代码!(注意:是紧急修复分支的代码,不是测试dev分支代码,因为我们无法保证dev分支有无其他同学提交的未测试通过的代码!!!)
  • 推送master分支merge热修复的代码到远程仓库,发布项目
  • 如果需要的话添加tag标签,标记一下操作。
  • 删除热修复分支,切换到dev分支,继续自己的本地开发。

操作流程

  • 切换到master分支,拉取最新代码
git checkout master
git pull
  • 基于master分支创建热修复分支
git branch master_hotfix
  • 切换到热修复分支
git checkout master_hotfix
  • 本地开发,修复bug,测试
coding
  • 本地测试通过后,merge热修复代码到dev分支
git checkout dev
git merge master_hotfix
  • 解决冲突,提交代码,测试环境进行测试
git push origin dev
  • 测试通过后,merge热修复代码到master分支
git checkout master
git merge master_hotfix
  • 推送master代码到远程仓库
git push origin master
  • 添加tag标记:git tag -a 版本号 -m "注释"
git tag -a 1.1.0 -m "紧急修复xxbug"
  • 推送tag
git push --tag
  • 删除热修复分支
git branch -d master_hotfix
  • 切换到开发分支,进行本地开发
git checkout dev

附录:Git使用的小技巧

Git命令别名

  • 首先找到Git的配置文件,比如Mac系统下
vim ~/.gitconfig
  • 在配置文件中根据自己的使用习惯添加[alias],比如:
[alias]
br = branch
ci = commit
cl = clone
co = checkout
cp = cherry-pick
cfg = clone
df = diff
fh = fetch
lg = "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative"
mg = merge
pl = pull
plr = pull --rebase
rb = rebase
ph = push
rmt = remote
rst = reset
sh = stash
st = status
sts = status -s
sbm = submodule
sw = show
swf = "show --name-status"
delb = "push origin --delete"
delt = "push origin :"
mb = merge-base
  • 这样我们就能使用简化后的命令操作git了,进一步提高了效率。

比如:

git commit -m'注释'

可以简化为:

git ci -m'注释'

总结

团队协作是职业生涯中必须面对的问题,Git为我们代码的协作管理提供了强大的工具。 熟悉Git操作,拥抱团队协作。

以上就是Git多人协同开发紧急修复线上bug操作指南的详细内容,更多关于Git协同开发线上bug修复的资料请关注我们其它相关文章!

(0)

相关推荐

  • Git基础之git在项目中的协作模式

    目录 1.分布式工作流程 2.集中式工作流 3.分支工作流 4.GitFlow 工作流(最流行) 5.Forking 工作流(偶尔使用) 6.总结 1.分布式工作流程 与传统的集中式版本控制系统(CVCS)相反,Git 的分布式特性,使开发者间的协作变得更加灵活多样. 在集中式版本控制系统中,每个开发者就像是连接在集线器上的节点,彼此的工作方式大体相像. 而在 Git 中,每个开发者同时扮演着节点和集线器的角色.也就是说, 每个开发者既可以将自己的代码贡献到其他的仓库中,同时也能维护自己的公开仓

  • 协同开发巧用gitignore中间件避免网络请求携带登录信息

    目录 协同开发时本地测试 GoFrame如何优雅的获得方法名 巧用中间件 中间件在登录之后设置关键信息到context上下文中 业务逻辑直接通过context直接取值 case when 总结 协同开发时本地测试 昨天的文章中提到了Go如何优雅的进行本地测试,今天分享一下:在多人协同开发中,如果大家都进行本地测试可能会出现的问题. 最大的问题就是git合并的问题,大家都改这个test文件,就会导致有冲突. 我们可以通过把test文件加到.gitignore中来解决这个问题. 比如,我的测试文件所

  • 详解Android Studio中Git的配置及协同开发

    一. Android Stutio配置git setting–>Version Control–>Git–>Path to Git executable中选择git.exe的位置,这个Stutio一般会默认配置好: 配置完路径后点击后面的Test按钮,出现下面提示框则表示配置成功: 二. 将项目分享到github 1. 设置github账号密码 打开Setting–>Version Control–>GitHub,填写完账号密码后,点击Test测试,如果连接成功会弹出如下提示

  • 每天学一分钟使用Git服务器实现查看Debug分支及修复

    Debug分支 在项目的正常开发过程中,之前发布过的版本可能很会出bug,这时就需要停下来现在的开发任务,先去修改bug,完成后再回来继续开发任务 git中stash提供了保存现场的功能,可以把当前工作区.暂存区中的内容不需要提交而保存下来,转而去做bug修复,完成后再恢复现场,继续开发工作 示例如下:停止当前工作,修复master分支下的一个bug,为修改dailyfresh/settings.py文件 语言和时区的原内容为 LANGUAGE_CODE = 'en-us' TIME_ZONE

  • Git多人协同开发紧急修复线上bug操作指南

    目录 使用场景 解决思路 操作流程 附录:Git使用的小技巧 Git命令别名 总结 使用场景 团队协同开发时,生产环境出现bug,需要紧急修复. 每位同学在本地开发,对应本地的dev分支,本地测试通过后提交到测试环境的dev分支. 测试环境有其他同学提交的代码,正在测试中,无法提交到生产环境的master分支. 以上情况导致我们不能在本地基于dev分支修复bug,因为会和其他同学提交的测试中的代码“撞车”,导致无法及时提及到生产环境. 这个时候如何正确使用Git管理代码呢? 解决思路 首先我们从

  • Git在项目协作开发中所解决问题

    目录 1.Git的历史 Tips: 2.Git的特点 3.Git在项目协作开发中所解决的问题 1.Git的历史 Git是目前世界上最先进的分布式版本控制系统,开源.免费. Git 是 Linus (林纳斯)为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件. Tips: Linus在1991年创建Linux,现在已经成为最大的服务器系统软件了. Linux的壮大是靠全世界热心的志愿者: 在2002年以前,世界各地的志愿者把源代码文件发给Linus,然后由Linus本人通过手工方

  • PHP多人模块开发原理解析

    作为世界上最"好"的语言,在web里占据着大概80%的份额,中小公司基本都说 lnmp 架构.当一个仓库开发人员大于1,20人的时候,每个人可能开发不同的模块和功能,用代码版本控制工具比如 git 开不同的分支,流程大概是先在本地搭一套完整的环境,开发好部署在测试环境,自测或者测试人员测试好之后部署在预发布环境,预发布基本和线上环境一样,然后给产品验收,验收完成后再发布上线. 由于是并行开发,肯定存在好几个功能同时验收或者测试的情况,这个时候预发环境到底部署谁的代码呢?切换到A的分支,

  • git 一个可以提高开发效率的命令:cherry-pick详解

    各位码农朋友们一定有碰到过这样的情况:在develop分支上辛辛苦苦撸了一通代码后开发出功能模块A,B,C,这时老板过来说,年青人,我们现在先上线功能模块A,B.你一定心里一万只草泥马奔腾而过,但为了混口饭吃必须得按老板的意思办事啊. 怎么办?一个办法就是,重新建一个分支,然后再把功能模块C回退,留下功能模块A,B.这种做法不是不行,但是有更好的办法,那就是git所提供的cherry-pick功能. cherry-pick类似于一个定制化的merge,它可以把其它分支上的commit一个个摘下来

  • SpringCloud协同开发实现方法浅析

    目录 微服务注册问题 微服务间调用问题 前后端联调问题 相比Springboot开发,SpringCloud开发要复杂的多,因为涉及服务的注册发现,多个微服务模块间的调用等. 最简单的解决方案是每个开发者都在本地启动一套完整的开发环境,包括网关.nacos等各个组成微服务的模块,如果系统模块较少,这种开发方案还可以接受,如果系统太多,本地启动整套环境未免太多臃肿,非常不方便. 微服务注册问题 像下面这张图,倒数第二个服务启动了两个实例,他们两个组成了一个集群.前端在调用接口的时候可能想调用A的该

  • Android开发之绘制平面上的多边形功能分析

    本文实例讲述了Android开发之绘制平面上的多边形功能.分享给大家供大家参考,具体如下: 计算机里的3D图形其实是由很多个平面组合而成的.所谓"绘制3D"图形,其实是通过多个平面图形形成的.调用GL10图形绘制2D图形的步骤如下: i. 调用GL10的glEnableClientState(GL10.GL_VERTEX_ARRAY);方法启用顶点坐标数组. ii. 调用GL10的glEnableClientState(GL10.GL_COLOR_ARRAY);方法启用顶点颜色数组.

  • iOS开发中文件的上传和下载功能的基本实现

    文件的上传 说明:文件上传使用的时POST请求,通常把要上传的数据保存在请求体中.本文介绍如何不借助第三方框架实现iOS开发中得文件上传. 由于过程较为复杂,因此本文只贴出部分关键代码. 主控制器的关键代码: 复制代码 代码如下: YYViewController.m #import "YYViewController.h" #define YYEncode(str) [str dataUsingEncoding:NSUTF8StringEncoding] @interface YYV

  • Android开发中在TableView上添加悬浮按钮的方法

    如果直接在TableVIewController上贴Button的话会导致这个会随之滚动,下面解决在TableView上实现位置固定悬浮按钮的两种方法: 1.在view上贴tableView,然后将悬浮按钮贴在view的最顶层 2.使用window 首先看一下最终的效果,在tableViewController上添加一个悬浮按钮,该按钮不能随着视图的滚动而滚动 首先介绍上面的第一种方法: 1)创建tableview和底部按钮的属性 //屏幕宽 #define kScreenW [UIScreen

随机推荐