写点什么

协同开发时,如何科学的使用 Git 紧急修复线上 bug?

作者:王中阳Go
  • 2022-10-15
    北京
  • 本文字数:1306 字

    阅读完需:约 1 分钟

协同开发时,如何科学的使用Git紧急修复线上bug?

使用场景

  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"
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
复制代码


  1. 这样我们就能使用简化后的命令操作 git 了,进一步提高了效率。比如:


git commit -m'注释'
复制代码


可以简化为:


git ci -m'注释'
复制代码

总结

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


本文抛砖引玉,大家还有哪些 Git 使用技巧,欢迎在评论区赐教。

一起学习,升级打怪

我们搞了一个对学 Go 真正有帮助的群,欢迎加入:


公众号:程序员升级打怪之旅


微信号:wangzhongyang1993

发布于: 2022-10-15阅读数: 22
用户头像

王中阳Go

关注

公众号:程序员升级打怪之旅 2022-10-09 加入

微信:wangzhongyang1993

评论 (1 条评论)

发布
用户头像
相信这类问题在你们的开发过程中一定遇到过
2022-10-15 21:21 · 北京
回复
没有更多了
协同开发时,如何科学的使用Git紧急修复线上bug?_git_王中阳Go_InfoQ写作社区