还是接上次那个茬,这星期出了各种的问题,各种的队列堆积堵塞,各种因为变动引起的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的作者 陈皓要来我们公司做分享,可以跟大神合影了。 哈哈 !
这场景不常见