105人参与 • 2026-09-20 • 其他编程
我们经常会遇到这样的情况:
在一个分支开发新功能,还没开发完毕,做到一半时有反馈紧急bug需要处理,但是新功能开发了一半又不想提交。
分支有改变时不提交又不能切换分支,如下:

这时就可以使用 git stash ,stash 就是为此而生的!
它会保存当前工作进度,会把暂存区和工作区的改动保存到一个未完结变更的堆栈中;执行完这个命令后,在运行 git status 命令,就会发现当前是一个干净的工作区,没有任何改动。
git stash 是本地的,不会上传到服务器上;git stash save 'message...' 添加一些注释。| 命令名 | 作用 |
|---|---|
| git stash | 隐藏当前的工作现场, 此时, git status的结果是 clean |
| git stash list | 查看所有隐藏, 每一行的冒号前面的字符串就是标识此隐藏的id |
| git stash apply | 重新显示标识为 id 的隐藏 |
| git stash drop | git apply恢复隐藏后, 需要手动删除 list 列表中的记录 |
| git stash pop | 恢复最新的进度到工作区 |
| git stash pop stash@[stash_id] | 恢复指定的进度到工作区 |
一般先使用 git stash list 查看有没有已经 stash 的记录,避免和自己的混淆,到时候使用时不知道是哪条记录

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

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

2. 查看刚才保存的工作进度 `git stash list`
保存注释的长这样:

可以看到 stash@{0} 是刚才保存的
3. 这时候在看分支已经是干净无修改的(改动都有暂存到 stash)

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

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

6. 选择使用暂缓 `git stash apply n`
注:n 是序号,如下图红色箭头指示

这时就看到刚才保存的工作进度,已经原样恢复~大功告成!
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论