git Stash详细介绍:git stash和git pop的详细用法

git Stash详细介绍:git stash和git pop的详细用法


一、背景 ----

我们经常会遇到这样的情况:

在开发过程中,在一个分支开发新的功能,还没开发完毕,做到一半时有反馈需要处理紧急bug,但是新功能开发了一半又不想提交。

分支有改变时不提交又不能切换分支,如下:

这时就可以使用 git stash ,stash 就是为此而生的!

二、使用

2.1 使用之前,先简单了解下 git stash 干了什么:

它会保存当前工作进度,会把暂存区和工作区的改动保存到一个未完结变更的堆栈中;执行完这个命令后,在运行 git status 命令,就会发现当前是一个干净的工作区,没有任何改动。

  1. git stash 是本地的,不会上传到服务器上;
  2. 可以通过使用git stash save 'message...'可以添加一些注释。

2.2 git stash 相关命令

命令名作用
git stash隐藏当前的工作现场, 此时, git status的结果是 clean
git stash list查看所有隐藏, 每一行的冒号前面的字符串就是标识此隐藏的id
git stash apply重新显示标识为 id 的隐藏
git stash dropgit apply恢复隐藏后, 需要手动删除 list 列表中的记录
git stash pop恢复最新的进度到工作区
git stash pop stash@[stash_id]恢复指定的进度到工作区

2.3 使用流程

一般先使用 git stash list 查看有没有已经 stash 的记录,避免和自己的混淆,到时候使用时不知道是哪条记录

查看有无用的 list,可以先使用 git stash drop n 删除,直到 list 为空

  1. 执行 git stash

默认是不带注释的,想要后面看的更清楚该 stash 是存储的什么,可以如下操作:

执行  git stash save "commend"

  1. 查看刚才保存的工作进度 git stash list

保存注释的长这样:

可以看到 stash@{0} 是刚才保存的

  1. 这时候在看分支已经是干净无修改的(改动都有暂存到 stash)

  1. 现在就可以正常切换到目标分支,进行相应操作

  1. 其他分支处理完成,再切回来使用刚才的 stash, 还是先查看 暂缓列表

  1. 选择使用暂缓 git stash apply **n**

这时就看到刚才保存的工作进度,已经原样恢复~大功告成!

继续开发。。。


先来思考一下,为什么会使用 stash 命令?

在项目开发中,基本都会遇到这样的情况:本来你在自己的分支上愉快的开发功能A,但是突然加了一个优先级很高的需求B或者有bug需要先修复掉。但这个时候,你新做的功能A刚开发到一半,总不能先提交A再开发B,或者直接拉个新分支切过去吧?(可以倒是可以,但是不推荐)

git stash在暂存区:存取、删除

截图部分(方便查看)

内容部分(方便复制命令)

暂存区:存取、删除
命令说明
git add.、git stash提交到暂存区
git stash暂存工作区修改的内容:保存到暂存区(可以提N次)
git stash pop恢复暂存的工作区内容:从暂存区取出(最近一次)
git stash list查询工作区所有stash的列表
git stash apply stash@{2}查询后,恢复第二次提交的
git stash clear清空暂存区的所有stash
posted @ 2022-12-06 21:15  李帆同学  阅读(3153)  评论(0编辑  收藏  举报
TOP