名称:git stash使用与介绍
目录:
一、介绍
二、场景
三、如何使用 git stash
1、git stash隐藏
2、git stash list查看记录
3、栈的基本规则
4、git stash pop 恢复
5、git stash apply 恢复
6、git stash clear
三、源码分析
1、源码思路
字数:大约900字
一、介绍
将分支下修改过、未提交的文件隐藏。这样做的用处是什么?
二、场景:
1、当你正在feature/fix-table-bug分支下修改组件库table的某个bug时,写了一半,涉及了4、5个文件。这个时候生产出现了紧急bug,你不得不放下当前的bug,去修复紧急bug,你的做法是怎样的呢?
1、提交当前修改的内容:功能bug没有修复就提交,会导致更严重的问题,并且你修复的内容是很多人都在使用的,影响到任何人的开发进度的为完成的bug,要先修复测试好了再提交。
2、将修改的内容本地复制粘贴保存:太傻瓜式、麻烦、容易丢失;
3、直接切换分支:会把修改内容移到新分支去,如果有冲突还会抱错,不能这样;
4、新建临时分支,产生分支记录,多了也让人烦。
三、如何使用 git stash
按照上面的场景走一遍。首先我们在一个分支修改文件。
这个时候就到git stash起作用了。 步骤:
1、git stash隐藏
git stash
// Saved working directory and index state WIP on feature/fix-table-bug: 52bb09c ffff
这样,我们的git工作区就空了,我们再修改一下文件,在git stash一下,发现同样成功,那我们怎么看git stash隐藏的记录呢,通过下面
2、git stash list查看记录
查看git stash隐藏记录
git stash list
// stash@{0}: WIP on feature/fix-table-bug: 52bb09c ffff
// stash@{1}: WIP on feature/fix-table-bug: 52bb09c ffff
会发现有两条记录,数量没有问题,但是这个0、1是不是识别起来有点麻烦,应该标识一下,所以在使用git stash时候应该这样用。
git stash save "inputFixBug"
// Saved working directory and index state On feature/fix-table-bug: inputFixBug
再用git stash list看看
git stash list
// stash@{0}: On feature/fix-table-bug: inputFixBug
// stash@{1}: On feature/fix-table-bug: tableFixBug
这样就很好识别了。但是除了添加保存备注,就没有好的办法了吗。当然也有,你如果知道git stash的隐藏记录逻辑就可以了。
git stash 隐藏记录规则是按照栈的规则来的。栈的基本规则是什么?
3、栈的基本规则
1、先进后出
2、表的固定一端对数据进行插入和删除操作,另一端是封死的。


这样你就应该明白了,先stash的stash@{}内的数字越大,越在栈底。
4、git stash pop 恢复
等我们修复好紧急bug之后,又要修复这个bug,所以我们需要取消隐藏,用它就行。
git stash pop stash@{0}


这样内容又恢复了。
会发现 这个时候用git stash list去查看,记录已经不在了,所以使用git stash pop时候,记录会被移除,也就是出栈。
5、git stash apply 恢复
如果你想只是把隐藏的展示,栈记录不移除的话使用git stash apply。
git stash pop apply@{0}


这样记录还存在。
6、git stash clear
git stash clear将stash 记录都清空。将栈清空。