
博主公司要求每个需求都要建立一个新的分支来开发,开发测试完毕后,再统一更新到 realse 主分支上发版上线。又由于博主比较牛马,好几个需求都在开发,这就导致了往往一个需求开发到一半,又要切换到另一个分支去解决另一个需求。那在第一个分支开发的需求还没开发完怎么办呢?直接 commit 提交到本地又会导致 push 时会存在很多垃圾提交记录。在这样的场景下,博主学会了使用 git stash命令
Git Stash允许你能够在不提交当前分支代码的情况下切换分支
主要用于在切换分支时或进行其他 Git 操作时,避免未提交的的修改被干扰或丢失。Stash 允许你保存当前修改,并在需要时重新应用
下图展示了关于暂存区和工作目录和远程仓库之间的关系:

Git Stash 类似于一个栈(Stack),使用 LIFO(后进先出) 方式管理多个存储项。每次执行git stash,都会创建一个新的 stash 记录,并将其存入栈顶
默认情况下,git stash会缓存下列文件:
但不会缓存以下文件:
git stash该命令会保存未提交的代码,但不会保存未追踪(untracked)的文件或被忽略的文件
注:强烈建议使用 git stash save指令!
git stash save "提示信息"该命令和 Git stash命令一样,但相比较 Git stash,我们手动指定暂存消息后,会更加清晰。后续我们 stash 多次时,也能很清晰找到自己希望还原的指定记录!
git stash list显示所有存储的 stash 记录,每个记录会默认生成一个索引
eg:

git stash apply该命令将重新运用最近一次的暂存记录。用此命令后,对应的暂存记录并不会删除
如果有多个暂存记录,可以在命令后面跟上对应暂存记录的版本记录 ID 来应用特定的暂存记录
git stash apply <stash id>eg:

git stash show该命令将显示被隐藏的的文件和对它们所做的修改,可以帮助我们跟踪它们的状态
eg:

上方的输出说明,有 5 个文件被隐藏了,并且对他们进行了 15 次插入操作,2 次删除操作
git stash pop该命令将重新运用最近一次的暂存记录
同理,可以在后面跟上版本号运用指定的暂存记录
Git stash pop命令与Git stash apply很相似。这两个命令的主要区别是Git stash pop命令在应用后将从堆栈中删除此次版本
git stash drop该命令将从队列中删除最近的一次暂存记录。在使用此命令之前,应该小心谨慎,因为一旦执行就很难撤销
eg:

git stash clear该命令将一次性删除所有可用的暂存记录
eg:

上方的输出说明,所有的暂存记录都被删除了,Git stash list命令是空白的,因为暂存区中没有可用的暂存记录了