如何一次性删除所有 Git stash
清空全部 stash 用 git stash clear,不可恢复,执行前用 git stash list 确认。删除单个用 git stash drop stash@{n}。误删后可通过 git fsck --unreachable 找孤立提交尝试恢复。
git stash clear 一条命令清空整个 stash 栈。 注意这是不可恢复的操作——执行前 git stash list 过一遍,确认没有还需要的暂存。只删个别条目用 git stash drop stash@{n}。
命令
git stash list # 先检查
git stash clear # 全部删除
单个删除:
git stash drop stash@{2} # 删指定条目
git stash pop # 应用并删除最新一条
误删了还有救吗
stash 本质也是提交对象,clear 后成为孤立提交,垃圾回收前可以捞:
git fsck --unreachable | grep commit
# 逐个 git show <哈希> 确认是不是丢掉的 stash
git stash apply <哈希> # 找回
能否恢复取决于对象是否已被垃圾回收,不能保证固定窗口;找到目标后应立即建立引用保留。
更好的习惯
重要改动别长期躺 stash——stash 适合"临时挪开几小时"。需要跨天保留的改动,开分支提交才是正路:
git stash branch keep-for-later stash@{0} # 把 stash 转成正式分支
常见问题(FAQ)
Q:clear 和一条条 drop 有区别吗?
结果一样,clear 就是批量。区别在风险面:clear 一键全没,drop 至少逼你看一眼条目编号。
Q:stash 占用磁盘空间吗?
占用,每个 stash 都是一组提交对象。大量 stash 会让仓库膨胀,定期清理是好习惯。
Q:能给 stash 加备注防误删吗?
git stash push -m "这里是什么改动",list 里会显示备注,比默认的 "WIP on main" 好认得多。