廖雪峰的Git学习笔记 - 4 - Bug分支 - (git stash,git cherry-pick) -(贮藏、蜜汁挑选)

版本控制 - Git - ❤️ 专栏收录该内容
29 篇文章 0 订阅

软件开发中,bug就像家常便饭一样。

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

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

在这里插入图片描述

并不是你不想提交,而是工作只进行到一半,还没法提交,预计完成还需1天时间。但是,必须在两个小时内修复该bug,怎么办?

幸好,Git还提供了一个stash功能,可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作:

git stash

$ git stash
Saved working directory and index state WIP on dev: f52c633 add merge

在这里插入图片描述
在这里插入图片描述

现在,用git status查看工作区,就是干净的(除非有没有被Git管理的文件),因此可以放心地创建分支来修复bug。

git checkout master

git checkout -b issue-101

首先确定要在哪个分支上修复bug,假定需要在master分支上修复,就从master创建临时分支:

$ git checkout master
Switched to branch 'master'
Your branch is ahead of 'origin/master' by 6 commits.
  (use "git push" to publish your local commits)

$ git checkout -b issue-101
Switched to a new branch 'issue-101'

在这里插入图片描述

git commit -am “…”

现在修复bug,需要把“Git is free software …”改为“Git is a free software …”,然后提交:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

git checkout master

git merge issue-101

git branch -d issue-101

修复完成后,切换到master分支,并完成合并,最后删除issue-101分支:
在这里插入图片描述

在这里插入图片描述

恢复 stash ( g i t − s t a s h − p o p \color{#ff0011}{git-stash-pop} gitstashpop)(git stash apply)

工作现场还在,Git把stash内容存在某个地方了,但是需要恢复一下,有两个办法

  • 一是用git stash apply恢复
    但是恢复后,stash内容并不删除,你需要用git stash drop来删除;

  • 另一种方式是用git stash pop,恢复的同时把stash内容也删了:

在这里插入图片描述

git stash list

在这里插入图片描述

∗ ∗ 注 意 ∗ ∗ \color{#ff0011}{**注意**}

  • 你可以多次stash,恢复的时候,先用git stash list查看,然后恢复指定的stash,用命令:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

修复dev

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

那怎么在dev分支上修复同样的bug?重复操作一次,提交不就行了?

有木有更简单的方法?

有!


git cherry-pick <指针> 看 链 接 \color{#ff0011}{看链接}

  • 《[Git]执行git stash pop时的冲突解决》https://blog.csdn.net/jy692405180/article/details/78520251
    廖 雪 峰 一 个 问 题 没 讲 清 楚 , 链 接 里 讲 了 。 \color{#ff0011}{廖雪峰一个问题没讲清楚,链接里讲了。}

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

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

$ git branch
* dev
  master
$ git cherry-pick 4c805e2
[master 1d4b803] fix bug 101
 1 file changed, 1 insertion(+), 1 deletion(-)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

小结

修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除;

  • 当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场;

  • master分支上修复的bug,想要合并到当前dev分支,可以用git cherry-pick <commit>命令,把bug提交的修改“复制”到当前分支,避免重复劳动。

  • 0
    点赞
  • 0
    评论
  • 1
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
<p style="color:#666666;"> <span style="font-size:14px;">本门课程重实战将基础知识拆解到项目里让你在项目情境里学知识。</span> </p> <p style="color:#666666;"> <span style="font-size:14px;">这样学习方式能让你保持兴趣充满动力时刻知道学东西能用在哪能怎么用。</span> </p> <p style="color:#666666;"> <span style="font-size:14px;">平时不明白知识点放在项目里去理解就恍然大悟了。</span> </p> <p style="color:#666666;"> <span></span> </p> <p style="color:#666666;"> <span style="font-size:14px;"> </span> </p> <p style="color:#666666;"> <span style="color:#FF0000;font-size:14px;"><strong>一融汇贯通</strong></span> </p> <p style="color:#666666;"> <span style="font-size:14px;">本视频采用了前后端分离开发模式前端使用Vue.js+Element UI实现了Web页面呈现后端使用Python Django框架实现了数据访问接口前端通过Axios访问后端接口获得数据。在学习完本章节后真正理解前后端各自承担工作。</span> </p> <p style="color:#666666;"> <span style="font-size:14px;"> </span> </p> <p style="color:#666666;"> <span style="color:#FF0000;font-size:14px;"><strong>二贴近实战</strong></span> </p> <p style="color:#666666;"> <span style="font-size:14px;">本系列课程为练手项目实战:学生管理系统v4.0开发项目包含了如下几个内容:项目总体介绍基本功能演示Vuejs初始化Element UI使用在Django中实现针对数据增删改查接口在Vuejs中实现前端增删改查调用实现文件上传实现表格分页实现导出数据到Excel实现通过Excel导入数据实现针对表格批量化操作等等所有功能都通过演示完成贴近了实战</span> </p> <p style="color:#666666;"> <span style="font-size:14px;"> </span> </p> <p style="color:#666666;"> <span style="color:#FF0000;font-size:14px;"><strong>三课程亮点</strong></span> </p> <p style="color:#666666;"> <span style="font-size:14px;">在本案例中最大亮点在于前后端做了分离真正理解前后端各自承担工作。前端如何和后端交互</span> </p> <p style="color:#666666;"> <span style="font-size:14px;"> </span> </p> <p style="color:#666666;"> <span style="color:#FF0000;font-size:14px;"><strong>适合人群:</strong></span> </p> <p style="color:#666666;"> <span style="font-size:14px;">1有Python语言基础web前端基础想要深入学习Python Web框架朋友;</span> </p> <p style="color:#666666;"> <span style="font-size:14px;">2有Django基础但是想学习企业级项目实战朋友;</span> </p> <p style="color:#666666;"> <span style="font-size:14px;">3有MySQL数据库基础朋友</span> </p> <p style="color:#666666;"> <span style="font-size:14px;"> </span> </p> <p style="color:#666666;"> <span style="font-size:14px;"><img alt="" src="https://img-bss.csdnimg.cn/202009070752197496.png" /><br /> </span> </p> <p style="color:#666666;"> <span style="font-size:14px;"><br /> </span> </p>
©️2020 CSDN 皮肤主题: 撸撸猫 设计师:马嘣嘣 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值