BUG分支  廖雪峰

  软件开发中,bug就像家常便饭一样。有了bug就需要修复,

  在Git中,由于分支是如此的强大,所以,

  每个bug都可以通过一个新的临时分支来修复,修复后,合并分支,然后将临时分支删除。

  

--

  当你接到一个修复一个代号101的bug的任务时(假设该bug在master分支上),很自然地,

  你想创建一个分支issue-101来修复它

  但是,等等,当前正在dev上进行的工作还没有提交

    

  如果当前dev分支上的修改不进行提交, 不能切换到master分支上去修复bug

    

---

  并不是你不想提交,而是工作只进行到一半,还没法提交,预计完成还需1天时间。

  但是,必须在两个小时内修复该bug,怎么办?

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

  

  

    

    储存之前:

        

   储存之后:

        

----

  现在,用git status查看工作区,就是干净的除非有没有被Git管理的文件),

  因此可以放心地创建分支来修复bug

    

----- 

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

    切换到master分支, 从master分支上创建临时分支(前面提到了, 如果当前使用的dev分支上的修改没有commit或者stash,不能切换分支)

      

        

------

  现在修复bug,

    

  需要把“Git is free software ...”改为“Git is a free software ...”,然后提交:

    

      

-------

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

         $git checkout master

     $git merge --no-ff -m"merged bug fix 101" issue-101

      

      

--------

  太棒了,原计划两个小时的bug修复只花了5分钟!

  现在,是时候接着回到dev分支干活了!

    

    

---------

  发现工作区是干净的, 因为之前把工作现场先暂时用stash存储起来了

    

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

    

---------

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

  

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

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

    

     

  

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

    

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

  1.     $ git stash apply stash@{0}

小结

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

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

修复后,再git stash pop,回到工作现场。

Git 分支管理 BUG分支的更多相关文章

  1. GIT 分支管理:分支管理策略、Bug分支、Feature分支

    通常,合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息. 如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的comm ...

  2. Git 分支管理 Feature分支 强行删除分支

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

  3. git中的bug分支和Feature分支

    /*游戏或者运动才能让我短暂的忘记心痛,现如今感觉学习比游戏和运动还重要——曾少锋*/ 如果对于分支还不太明白的学者.请先参考:http://www.cnblogs.com/zengsf/p/7512 ...

  4. git 学习笔记 --Bug分支

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

  5. git分支管理之分支管理策略

    分支管理策略 阅读: 246888 通常,合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息. 如果要强制禁用Fast forward模式,Git就 ...

  6. Git for Windows之分支管理、分支合并、解决分支冲突

    分支是在稳定版本出现bug的情况下,通过分支技术,在保证稳定版本稳定的情况,修改稳定版本的(差异下载的,速度极快,不同于SVN等技术,会将所有的代码下载到本地)副本,通过合并,解决冲突,最后回归到稳定 ...

  7. Git复习(三)之分支管理、分支策略

    创建合并删除分支 我们知道每次提交git都会将他们串成一条线,这条时间线就是一个分支.在git里这条时间线叫做主分支,即master分支 HEAD指向master,master指向最新的提交,所以,H ...

  8. git 创建管理远程分支

      1.远程分支就是本地分支push到服务器上的时候产生的.比如master就是一个最典型的远程分支(默认). 1 $: git push origin master 除了master之外,我们还可以 ...

  9. NO.A.0006——Git在IntelliJ IDEA中的使用/创建项目并推送到GitHub仓库/分支管理及分支合并

    一.在IntelliJ IDEA中使用Git: 1.在IDEA下创建项目并编写一个main方法的工程: 在IDEA下新建一个Project IDEA-->新建一个Project-->Fil ...

随机推荐

  1. Swift 学习笔记 (属性)

    属性可以将值与特定的类 结构体 或者枚举联系起来. 存储属性会存储常量或者变量作为实例的一部分.反之计算属性会计算(而不是存储值)值. 计算属性可以由类 结构体 和枚举定义.存储属性只能由类和结构体定 ...

  2. 【题解】P2444 病毒

    [题解][P2444 POI2000]病毒 一道\(ac\)自动机好题... 考虑危险的字符串是什么意思,就是在这个文本串中有模式串的匹配,这样的匹配可以通过\(ac\)自动机完成. 那么给定一个字符 ...

  3. 我的Android进阶之旅------>Android实现音乐示波器、均衡器、重低音和音场功能

    本实例来自于<疯狂Android讲义>,要实现具体的功能,需要了解以下API: MediaPlayer  媒体播放器 Visualizer 频谱 Equalizer 均衡器 BassBoo ...

  4. 使用AXIS2作为Client訪问WebService

    使用AXIS2,能够方便的构建WebService的server端,也能够非常方便的作为Cilent,来訪问别的WebService. 以下依据工作中的经历,整理了一下,作为Cilent訪问WebSe ...

  5. flask的请求上下文源码解读

    一.flask请求上下文源码解读 通过上篇源码分析( ---Flask中的CBV和上下文管理--- ),我们知道了有请求发来的时候就执行了app(Flask的实例化对象)的__call__方法,而__ ...

  6. Ctags快速入门

    Ctags快速入门 在vim下阅读代码,特别是阅读不熟悉的代码时,ctags是一个提高效率的强大的工具. 1. ctags是什么? ctags可以将代码中的函数.方法.类.变量和其他的标识符进行索引, ...

  7. 《CSS权威指南(第三版)》---第四章 值和单位

    本章主要讲解的是一些属性声明用的值: CSS中的值主要有数字,百分数,颜色, 1.颜色: rgb(100%,100%,100%)  OR  rgb(255,255,255) OR #FF0000 WE ...

  8. laravel基础课程---15、分页及验证码(lavarel分页效果如何实现)

    laravel基础课程---15.分页及验证码(lavarel分页效果如何实现) 一.总结 一句话总结: 数据库的paginate方法:$data=\DB::table("user" ...

  9. 《java编程思想》读后笔记:一,标签

    标签 是后面跟有冒号的标识符,格式如下: label : java中通过break与continue关键词可以完成类似于跳转的操作,其实现机制便是标签. 虽然很少有人使用,但是其有自身的适用场景:多层 ...

  10. (Nginx + Gunicorn) 时 nginx 400 request line is too large (4360 4094)

    查看nginx下面两个参数 值是否满足 client_header_buffer_size 512k;large_client_header_buffers 4 512k; 满足依然出现 如果ngin ...