多分支切换下使用git stash暂存not commit的状态

还是接上次那个茬,这星期出了各种的问题,各种的队列堆积堵塞,各种因为变动引起的bug,导致被打成筛子了。 

问题都集中在这两天,针对每个问题的解决都要创建一个分支,修改相对应的功能模块,然后测试成功后打成docker image上线。事情有些紧急,N个任务一块改,N个分支来回的切换。导致分支的混乱。当然造成这样的情况,更多的是我自己没有驾驭好的原因。 还真没经历过,短时间内多分支同时来着折腾的经验。  刚处理A分支,然后PM告诉我先解决B分支,然后某个队列暴涨,又切换到C分支,中间又碰到一个gevent  redis堵塞的问题,中间又碰到一个优先级的问题,暂时切换到D分支。这还不算完,还有几个动态js的接口是在一个新功能分支上。。。   一个个的解决bug的分支要测试,打成docker。 我自己真的迷乱了….. ….

大家知道在某个分支修改了文件后,再切换到别的分支是需要commit的,如果你不想git commit,那么就可以用git stash暂时存储下来。  那么针对我的问题来了,我已经也用git stash做临时文件变动的存储。 当时的用法说实话相对的简单,git stash,然后git stash pop。。。 如果在好几个分支同时修改下,刚才那种处理方法肯定是出问题的。  所以要好好学习下git stash的用法。 

git stash的简单教程(部分内容,copy网上的,自己懒得写了):

一、切换分之前,添加改动文件到stash。

在原分支 git stash save -a “messeag”,-a选项才会将新加入的代码文件同时放入暂存区。如果是以前就有了,那么就不用加-a,你加的话,会报错的。  这里的message已经要标注情况,分支倒是不用标明,一定要标明他的用途,不然你真的会乱的。 

二、切换回以前的分支后,如果你要恢复的是最近的一次改动,git stash pop,我想这是大家最常用的命令了吧。如果有多次stash操作,那就通过git stash list查看stash列表,从中选择你想要pop的stash,运行命令git stash pop stash@{id}或者 git stash apply stash@{id}即可。

三、删除stash。git stash drop stash@{id}  如果不加stash编号,默认的就是删除最新的,也就是编号为0的那个,加编号就是删除指定编号的stash。 当你都玩完了后,可以用git  stash clear清理所有的缓存记录。 

四、git stash pop  与 git stash apply <stash@{id}> 的区别。

这两个命令的区别。原来git stash pop stash@{id}命令会在执行后将对应的stash id 从stash list里删除,而 git stash apply stash@{id} 命令则会继续保存stash id。 一般来说你直接git stash pop stash@{id}就可以了,当然你如果想存下来,再后期的再次复原的话,可以用git satsh apply 。 见过一同事在git commit之前,居然在stash缓存区内放入了二十几次的stash记录,这尼玛,你就不能commit下呀。 

总结这次混乱,主要原因是自己对git stash不是很熟…… 没有很好的掌握git stash多个记录的用法。    就先这样吧,明天coolshell的作者 陈皓要来我们公司做分享,可以跟大神合影了。   哈哈     !


对Golang感兴趣的朋友可以加群: 278517979 !!!
另外如果大家觉得文章对你有些作用! 如果想赏钱,可以用微信扫描下面的二维码, 感谢!
另外再次标注博客原地址  xiaorui.cc

1 Response

  1. 与人 2015年6月5日 / 下午8:05

    这场景不常见

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">