当前位置: 首页 > news >正文

Bug分支

专业英语

stash 存放,储存

BUG分支

有了bug就需要修复,在Git中,由于分支是如此的强大,所以,每个bug都可以通过一个新的临时分支来修复,修复后,合并分支,然后将临时分支删除。

实验 先处理bug分支

当你接到一个修复一个代号101的bug的任务时,很自然地,你想创建一个分支issue-101来修复它,但是,等等,当前正在dev上进行的工作还没有提交:

当前的工作状态,hello.py已经添加到了暂存区,修改了readme.txt文件,还没有添加到暂存区

$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        new file:   hello.py

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   readme.txt

任务紧急,当务之急是要抓紧时间修改master上的bug,然而现在工作区的状态比较乱,需要整理一下。最好的办法就是能不能把现在的状态保存一下。

$ git branch
* dev
  master

Administrator@WIN-E2URN8GKKHJ MINGW64 ~/Desktop/learngit (dev)
$ git stash
Saved working directory and index state WIP on dev: 65a0233 add merge
HEAD is now at 65a0233 add merge

Administrator@WIN-E2URN8GKKHJ MINGW64 ~/Desktop/learngit (dev)
$ git status
On branch dev
nothing to commit, working directory clean

用了这个命令后,Git把dev上的当前状态存储起来了,当前的工作区状态是干净的,我们可以去做我们自己的事情了。

在issue-bug分支上将bug改完,然后切换到master分支,将issue分支用普通模式完成合并。

$ git branch -d issue-101
Deleted branch issue-101 (was 295eea3).

Administrator@WIN-E2URN8GKKHJ MINGW64 ~/Desktop/learngit (master)
$ git branch
  dev
* master

Administrator@WIN-E2URN8GKKHJ MINGW64 ~/Desktop/learngit (master)
$ git log --graph
*   commit c172dd3c1f4b663d3b6cfa4590cfaaa10c357c2f
|\  Merge: ca44dc9 295eea3
| | Author: wangguowei <wgw1206798585@vip.qq.com>
| | Date:   Sat Oct 15 15:27:10 2022 +0800
| |
| |     merged bug fix 101
| |
| * commit 295eea310a9a034ba3f4d4fa3c9cd042f9e7bcfc
|/  Author: wangguowei <wgw1206798585@vip.qq.com>
|   Date:   Sat Oct 15 15:25:36 2022 +0800
|
|       fix bug 101
|
*   commit ca44dc913f40971cc38c8955c65bb8f49fce1059
|\  Merge: e32a433 65a0233
| | Author: wangguowei <wgw1206798585@vip.qq.com>
| | Date:   Sat Oct 15 11:16:50 2022 +0800

注意:在Git的交互图中,每一个节点都是一次提交。bug分支只进行了一次提交!不是两次!!

实验 处理完bug后回来做我们自己的事情

我们切换回到dev分支,并将保存在stash中的现场恢复。

$ $ git checkout dev
* dev
  master

Administrator@WIN-E2URN8GKKHJ MINGW64 ~/Desktop/learngit (dev)
$ git stash list
stash@{0}: WIP on dev: 65a0233 add merge

Administrator@WIN-E2URN8GKKHJ MINGW64 ~/Desktop/learngit (dev)
$ git stash pop
On branch dev
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        new file:   hello.py

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   readme.txt

Dropped refs/stash@{0} (bc4a94cd38df1d1205d897884727f5f9c1b93813

命令的学习

git stash pop

等同于
git stash apply
git stash drop

这下就原来的工作区和暂存区的状态回来了!stash中的内容也没有了!

$ git stash list

思考 master上的bug在dev分支中仍然存在

在master分支上修复了bug后,我们要想一想,dev分支是早期从master分支分出来的,所以,这个bug其实在当前dev分支上也存在。

同样的bug,要在dev上修复,我们只需要把4c805e2 fix bug 101这个提交所做的修改“复制”到dev分支。注意:我们只想复制4c805e2 fix bug 101这个提交所做的修改,并不是把整个master分支merge过来。

为了方便操作,Git专门提供了一个cherry-pick命令,让我们能复制一个特定的提交到当前分支:

git cherry-pick <commit>命令,把bug提交的修改“复制”到当前分支,避免重复劳动。

使用Git修复bug的常用思路

  1. 保存现场
  2. 新建bug分支
  3. 在bug分支中完成修改
  4. 将master分支合并了bug分支
  5. 将bug分支中的修改同步到dev分支
  6. 根据需要将bug分支删除

相关文章:

  • 长沙旅游攻略景点必去/搜索引擎优化实训报告
  • 网站风格设定/工具
  • 鞍山网上制作网站/北京优化靠谱的公司
  • 网络数据分析/厦门百度seo点击软件
  • 空气炸锅做糕点的网站/营销型网站的公司
  • 台州自助建站在线咨询/百度付费问答平台
  • Elastic认证考试大纲(8.1版本)全方位分析(难度、考试频率、得分指数、综合分析等)
  • 在滴滴和字节跳动干了 2 年测试开发,太真实…
  • Spring boot 使用QQ邮箱进行一个验证登入
  • d你好Arduino
  • 将springboot项目部署到云服务器中,将vue项目部署到nginx中
  • 带你吃透Servlet核心编程下篇(完整图文教程)
  • Go语言详解
  • 初窥string(1)——string的基本使用
  • MyBatis的核心配置文件
  • 【SpringCloud学习笔记】Feign
  • 黑猫带你学UFS协议第8篇:UFS标志(Flags)和属性(Atrributes)详解
  • 你一定要知道的代码规范(进阶)