【Git实战】协同开发,如何紧急修复线上bug?_git工作流 线上问题修复

55 阅读3分钟

Go可以不学,但是Git必须会!

使用场景

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

解决思路

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

操作流程

  1. 切换到master分支,拉取最新代码
git checkout master

git pull

  1. 基于master分支创建热修复分支
git branch master_hotfix

  1. 切换到热修复分支
git checkout master_hotfix

  1. 本地开发,修复bug,测试
coding

  1. 本地测试通过后,merge热修复代码到dev分支
git checkout dev

git merge master_hotfix

  1. 解决冲突,提交代码,测试环境进行测试
git push origin dev

  1. 测试通过后,merge热修复代码到master分支
git checkout master

git merge master_hotfix

  1. 推送master代码到远程仓库
git push origin master

  1. 添加tag标记:git tag -a 版本号 -m “注释”
git tag -a 1.1.0 -m "紧急修复xxbug"

  1. 推送tag
git push --tag

  1. 删除热修复分支
git branch -d master_hotfix

  1. 切换到开发分支,进行本地开发
git checkout dev

附录:Git使用的小技巧

Git命令别名

  1. 首先找到Git的配置文件,比如Mac系统下
vim ~/.gitconfig

  1. 在配置文件中根据自己的使用习惯添加[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"



![img](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/bfc44c6a86854c3896492e50a5e7c897~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg5py65Zmo5a2m5Lmg5LmL5b-DQUk=:q75.awebp?rk3s=f64ab15b&x-expires=1770647475&x-signature=NwJMbBr7BAl4Wva1249J1grNP7Y%3D)
![img](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/4c9707e6a83043c4986905cd152ad051~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg5py65Zmo5a2m5Lmg5LmL5b-DQUk=:q75.awebp?rk3s=f64ab15b&x-expires=1770647475&x-signature=9HvxWHGWEIU8xU33Cd9wgeY60fY%3D)
![img](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/fa08e2914fa240ea961095f96b811769~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg5py65Zmo5a2m5Lmg5LmL5b-DQUk=:q75.awebp?rk3s=f64ab15b&x-expires=1770647475&x-signature=yFl%2BOkG71wriKYEK8PjYuvca%2BpQ%3D)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Go语言开发知识点,真正体系化!**

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**

**[如果你需要这些资料,可以戳这里获取](https://gitee.com/vip204888)**