企业🤖AI Agent构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
当咱们拿到一个新的bug或者feature(功能)时,首先应该想到通过分支来完成咱们的任务。因为在软件开发中,总是会根据客户的需求不断的添加新的feature进来,同时在做移动开发过程中bug也可以说是“常客”。通过前几章的内容,相信咱们很自然会想到创建一个新的branch(分支),在此分支上来修复bug或者实现feature,完成后,然后再merge(合并)到咱们的主分支上。 当咱们接到一个比如说是关于空指针的bug,而咱们手中的活(在b1分支上的bug)还没提交,预计要半天的时间,但新的bug必须在1小时内修完。这时咱们就要用到“储存现场”的功能git stash,这样咱们可以在修护新的bug之后再恢复现场来继续原先还没有提交的操作。下面咱们先修改之前的hellogit.txt文件的,修改内容为: ~~~ Hello Git Git is so easy. ~~~ 然后咱们仍然使用git status来观察一个该文本的状态: ![](https://box.kancloud.cn/2016-08-17_57b42eaf10a24.jpg) 可以看到红色部分提示,该文件已经被修改,同时该文件的状态仍处于工作区中,这是咱们接到一个新的bug,上级要求必须尽快修复,这时咱们先“保存现场”: ![](https://box.kancloud.cn/2016-08-17_57b42eaf2e3e4.jpg) 用git status查看工作区,就是干净的,除非有没有被Git管理的文件: ![](https://box.kancloud.cn/2016-08-17_57b42eaf43004.jpg) 因此咱可以放心地创建分支来修复bug,现在假定咱们使用主分支(master)来修复咱们的这个新的bug,就从主分支上创建一个临时分支b2: ![](https://box.kancloud.cn/2016-08-17_57b42eaf5b882.jpg) 现在修复1.txt中的bug: ![](https://box.kancloud.cn/2016-08-17_57b42eaf73049.jpg) bug修好了,下面提交: ![](https://box.kancloud.cn/2016-08-17_57b42eaf8e581.jpg) 切换到主分支上在merge(合并): ![](https://box.kancloud.cn/2016-08-17_57b42eafa3b15.jpg) 然后删除临时分支b2: ![](https://box.kancloud.cn/2016-08-17_57b42eafca7e1.jpg) 好了,新的bug已经修复完,下面就可以继续回到咱们原来的分支(b1)上继续工作了: ![](https://box.kancloud.cn/2016-08-17_57b42eafe551e.jpg) 咱们可以看到,工作区是干净的,之前咱们“储存的现场”哪去了呢?咱可以用git stash list来查看: ![](https://box.kancloud.cn/2016-08-17_57b42eb00be64.jpg) 存储的工作现场还在,Git把stash内容存在某个地方了,但是需要恢复一下,有两个办法: 方法一:先用git stash apply来恢复现场,然后再用git stash drop来删除stash内容; 方法二:直接使用git statch pop来恢复并删除stash内容。 咱们为了方便,就直接用git stash pop了: ![](https://box.kancloud.cn/2016-08-17_57b42eb02c66a.jpg) 可以看到b1分支上hellogit.txt的状态又回来了,咱又可以继续在b1分支上干活了![微笑](https://box.kancloud.cn/2016-01-18_569ca449c5105.gif) 。 **总结**:(1)存储现场:git stash           (2)查看工作现场:git stach list           (3)恢复现场有两种:1,使用git stash apply 来恢复,然后再使用git stash drop来删除stash的内容。                                              2.使用git stash pop,来恢复并删除stash内容。           (4)如果要多次使用stash,恢复的时候先用git stash list查看,然后在指定你要恢复的内容:git stash apply stash@{0}。          ( 5) 如果要丢弃一个没有合并的分支,可以使用git branch -D branch-name。