一、背景
我们经常会遇到这样的情况:
在开发过程中,在一个分支开发新的功能,还没开发完毕,做到一半时有反馈需要处理紧急bug,但是新功能开发了一半又不想提交。
分支有改变时不提交又不能切换分支,如下:
这时就可以使用 git stash ,stash 就是为此而生的!
二、使用
2.1 使用之前,先简单了解下 git stash 干了什么:
它会保存当前工作进度,会把暂存区和工作区的改动保存到一个未完结变更的堆栈中;执行完这个命令后,在运行
git status
命令,就会发现当前是一个干净的工作区,没有任何改动。
git stash
是本地的,不会上传到服务器上;- 可以通过使用
git stash save 'message...'
可以添加一些注释。
2.2 git stash 相关命令
命令名作用git stash隐藏当前的工作现场, 此时, git status的结果是 cleangit stash list查看所有隐藏, 每一行的冒号前面的字符串就是标识此隐藏的idgit 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 为空
- 执行
git stash
默认是不带注释的,想要后面看的更清楚该 stash 是存储的什么,可以如下操作:
执行 git stash save "commend"
- 查看刚才保存的工作进度
git stash list
保存注释的长这样:
可以看到 stash@{0} 是刚才保存的
- 这时候在看分支已经是干净无修改的(改动都有暂存到 stash)
- 现在就可以正常切换到目标分支,进行相应操作
- 其他分支处理完成,再切回来使用刚才的 stash, 还是先查看 暂缓列表
- 选择使用暂缓
git stash apply **n**
这时就看到刚才保存的工作进度,已经原样恢复~大功告成!
继续开发。。。
三、小结
这个相对简单,就是学会使用就 ok, 这里就不再啰嗦总结了
版权归原作者 i小明同学 所有, 如有侵权,请联系我们删除。