Git Bug分支

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

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

$ git status
On branch dev
Changes to be committed:(use "git reset HEAD <file>..." to unstage)new file:   hello.pyChanges 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

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

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

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

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

首先确定要在哪个分支上修复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'

现在修复bug,需要把“Git is free software …”改为“Git is a free software …”,然后提交:

$ git add readme.txt 
$ git commit -m "fix bug 101"
[issue-101 4c805e2] fix bug 1011 file changed, 1 insertion(+), 1 deletion(-)

修复完成后,切换到master分支,并完成合并,最后删除issue-101分支:

$ 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 merge --no-ff -m "merged bug fix 101" issue-101
Merge made by the 'recursive' strategy.readme.txt | 2 +-1 file changed, 1 insertion(+), 1 deletion(-)

太棒了,原计划两个小时的bug修复只花了5分钟!现在,是时候接着回到dev分支干活了!

$ git checkout dev
Switched to branch 'dev'$ git status
On branch dev
nothing to commit, working tree clean

工作区是干净的,刚才的工作现场存到哪去了?用git stash list命令看看:

$ git stash list
stash@{0}: WIP on dev: f52c633 add merge

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

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

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

$ git stash pop
On branch dev
Changes to be committed:(use "git reset HEAD <file>..." to unstage)new file:   hello.pyChanges 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.txtDropped refs/stash@{0} (5d677e2ee266f39ea296182fb2354265b91b3b2a)

再用git stash list查看,就看不到任何stash内容了:

$ git stash list

你可以多次stash,恢复的时候,先用git stash list查看,然后恢复指定的stash,用命令:

$ git stash apply stash@{0}

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/523687.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

kappa和lambda对比 | 程序员硬核评测

戳蓝字“CSDN云计算”关注我们哦&#xff01;程序员硬核评测&#xff1a;客观、高效、不说软话。无论是技术质量、性能水平&#xff0c;还是工具筛选&#xff0c;一测便知&#xff01;作者&#xff1a;浪尖转载&#xff1a;Spark学习技巧首先我们会详细的讲解这两种架构&#x…

Feature分支

软件开发中&#xff0c;总有无穷无尽的新的功能要不断添加进来。 添加一个新功能时&#xff0c;你肯定不希望因为一些实验性质的代码&#xff0c;把主分支搞乱了&#xff0c;所以&#xff0c;每添加一个新功能&#xff0c;最好新建一个feature分支&#xff0c;在上面开发&…

git提交代码的时候出现fatal: Could not read from remote repository.

引言 当在git使用中出现这样的提示的解决方法。 解决方法 我采用重新获取ssh-key的方法&#xff0c;关于具体的操作&#xff0c;可以查看博文&#xff1a; https://www.cnblogs.com/janve/p/10946630.html。 实际上具体的步骤&#xff0c;就是下面几句&#xff1a; ssh-key…

Git多人协作

当你从远程仓库克隆时&#xff0c;实际上Git自动把本地的master分支和远程的master分支对应起来了&#xff0c;并且&#xff0c;远程仓库的默认名称是origin。 要查看远程库的信息&#xff0c;用git remote&#xff1a; $ git remote origin或者&#xff0c;用git remote -v显…

边缘计算精华问答 | 火爆的边缘计算为何兴起?

戳蓝字“CSDN云计算”关注我们哦&#xff01;随着物联网在全球各行业中越来越普遍&#xff0c;企业们发现了云计算的不足&#xff0c;它不是解决所有问题的答案。此外&#xff0c;如果只有云计算&#xff0c;物联网项目不能充分发挥其潜力&#xff0c;特别是在实时分析&#xf…

qt下QString转换为const char*字符串

概述 本文直在说明将QString类型的变量转换为const char *类型。 实现 可以采用下面的方式来实现&#xff1a; QString.toStdString().c_str(); 示例 下面是一个示例&#xff1a; const QString msg "nis你好&#xff01;"; const char * str msg.toStdStrin…

Rebase

在上一节我们看到了&#xff0c;多人在同一个分支上协作时&#xff0c;很容易出现冲突。即使没有冲突&#xff0c;后push的童鞋不得不先pull&#xff0c;在本地合并&#xff0c;然后才能push成功。 每次合并再push后&#xff0c;分支变成了这样&#xff1a; $ git log --grap…

腾讯优图贾佳亚:当AI进入产业应用时代时,计算机视觉技术更应该服务于人才对!...

戳蓝字“CSDN云计算”关注我们哦&#xff01;从移动支付的自动贩卖机到刷脸支付的智能货柜&#xff1b;从亲自到柜台验证到人脸核身远程开卡&#xff1b;从排队买票、排队进门的糟糕旅游体验到提前预约&#xff0c;刷脸入园的智慧旅游……在昆明的腾讯全球数字生态大会AI 分论坛…

gitlab常用的命令

引言 使用gitlab提交代码的时候&#xff0c;若是使用的命令行&#xff0c;则需要输入命令行指令。下面是日常遇到的常用的命令行指令。 详情 git命令行常用指令的使用&#xff1a; git status #上次提交后是否对文件再做了修改项目1git add . #添加所有的变动git checkout …

创建标签

在Git中打标签非常简单&#xff0c;首先&#xff0c;切换到需要打标签的分支上&#xff1a; $ git branch * devmaster $ git checkout master Switched to branch master然后&#xff0c;敲命令git tag 就可以打一个新标签&#xff1a; $ git tag v1.0可以用命令git tag查看…

使用AWS CloudWatch 调优Lambda函数 | 技术头条

戳蓝字“CSDN云计算”关注我们哦&#xff01;技术头条&#xff1a;干货、简洁、多维全面。更多云计算精华知识尽在眼前&#xff0c;get要点、solve难题&#xff0c;统统不在话下&#xff01;译者&#xff1a;风车牛马整理&#xff1a;刘丹Kyle Galbraith&#xff0c;高级软件工…

记录greater和less

引言 本文针对C11中greater和less做简单的记录。本文使用visual studio 2017下控制台输出程序可以直接使用c11特性。 内部实现 查看greater和less会看到其下面的实现; template<class _Ty void>struct greater{ // functor for operator>_CXX17_DEPRECATE_ADAPTO…

操作标签

如果标签打错了&#xff0c;也可以删除&#xff1a; $ git tag -d v0.1 Deleted tag v0.1 (was f15b0dd)因为创建的标签都只存储在本地&#xff0c;不会自动推送到远程。所以&#xff0c;打错的标签可以在本地安全删除。 如果要推送某个标签到远程&#xff0c;使用命令git pu…

ARM到底是一家什么样的公司?

戳蓝字“CSDN云计算”关注我们哦&#xff01;技术头条&#xff1a;干货、简洁、多维全面。更多云计算精华知识尽在眼前&#xff0c;get要点、solve难题&#xff0c;统统不在话下&#xff01;作者&#xff1a;小枣君转自&#xff1a;鲜枣课堂这两天&#xff0c;一家叫做ARM的公司…

Visual Studio中输入英文会在字母之间自动增加空格

现象 不小心按了什么键之后字母之间增加了空格&#xff0c;如下面&#xff1a; ![在这里插入图片描述](https://img-blog.csdnimg.cn/b211b973b9c8470fae4402161ddb3935.png 解决办法 针对上面图片中显示的这种英文字母之间出现空格&#xff0c;是输入法出现了问题。恢复的…

Git 文件重命名

重命名 git mv oldFileName newFileName git commit -am"修改记录说明"

C中指针与成员变量生命周期的示例

引言 本文针对于碰到的指针做一些记录。详见下面的示例。 示例一 返回char类型指针&#xff0c;使用局部静态数组。 #include <stdlib.h>char * GetTestMemory(void) {static char p[] "hello world";printf("src%x\n",p);//数组首地址printf(&…

从Spark Streaming到Apache Flink: 实时数据流在爱奇艺的演进 | 技术头条

戳蓝字“CSDN云计算”关注我们哦&#xff01;技术头条&#xff1a;干货、简洁、多维全面。更多云计算精华知识尽在眼前&#xff0c;get要点、solve难题&#xff0c;统统不在话下&#xff01;作者&#xff1a;陈越晨转自&#xff1a;高可用架构本文将为大家介绍Apache Flink在爱…

Git 添加和提交组合命令

组合命令&#xff1a; git commit -am"修改记录说明"单条命令&#xff1a; git add 文件名 git commit -m"修改记录说明"

Storm精华问答 | Storm的配置需要注意什么问题?

戳蓝字“CSDN云计算”关注我们哦&#xff01;Apache Storm是一个分布式实时大数据处理系统。Storm设计用于在容错和水平可扩展方法中处理大量数据。它是一个流数据框架&#xff0c;具有最高的摄取率。今天&#xff0c;我们就挑一些Storm的安装配置问题来看看吧。1Q&#xff1a;…