Skip to content

名称: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隐藏

js
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隐藏记录

js
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时候应该这样用。

js
git stash save "inputFixBug"

// Saved working directory and index state On feature/fix-table-bug: inputFixBug

再用git stash list看看

js
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,所以我们需要取消隐藏,用它就行。

js
 git stash pop stash@{0}

这样内容又恢复了。

会发现 这个时候用git stash list去查看,记录已经不在了,所以使用git stash pop时候,记录会被移除,也就是出栈。

5、git stash apply 恢复

如果你想只是把隐藏的展示,栈记录不移除的话使用git stash apply。

js
 git stash pop apply@{0}

这样记录还存在。

6、git stash clear

git stash clear将stash 记录都清空。将栈清空。

Last updated: