Stash Changes菜单在顶部主菜单VCS → Git → Stash Changes…(或Git → Stash Changes…),不在右键菜单或Commit窗口中;误点Commit窗口右键的Shelve Changes是WebStorm私有功能,非Git原生命令,无法用git stash pop恢复。

Stash Changes菜单在哪,为什么右键找不到
WebStorm 的 Stash Changes 不在右键菜单、也不在 Commit 工具窗口(Alt+0)里。它只出现在顶部主菜单:点击 VCS → Git → Stash Changes…(部分版本路径为 Git → Stash Changes…)。误点 Commit 窗口右键里的 Shelve Changes 是 WebStorm 自家补丁,不是 Git 原生命令,后续无法用 git stash pop 恢复。
Include untracked files 到底要不要勾
默认不勾,Stash Changes 只暂存已跟踪文件(即之前 commit 过的)的修改。如果你新增了 utils/new-api.js 并编辑过,但没执行过 git add,它不会进 stash —— 点完 OK 后文件“消失”,其实是被跳过。
- 要一并暂存新文件,必须勾选
Include untracked files(对应命令行git stash push -u) - 但它仍受
.gitignore约束:被 ignore 的新文件,勾了也无效 -
Apply Stash时,默认不还原 untracked 文件,需手动勾选对话框中同名选项
stash 后怎么找回来,Apply 和 Pop 有什么区别
stash 不会自动出现在 Log 标签页或 Commit 窗口。必须主动打开:VCS → Git → Show Stashes(或按 Ctrl+Shift+A 搜 Show Stashes)。面板列出所有 stash@{0} 记录,带时间、来源分支和备注。
Conventional Commits v1.0.0 分支、工作树命名及提交信息规范,适用于 GitHub 与 GitLab 项目,用于创建分支和命名工作树等场景。
-
Apply Stash:把 stash 内容打到当前工作区,stash 保留在栈中,适合反复测试或保留备份 -
Pop Stash:等价于Apply + git stash drop;失败时(如冲突)stash 不会被删,但工作区停在冲突状态,需手动处理 - 跨分支
Apply可能静默跳过重命名/删除的文件,IDE 不警告
常见卡点:stash 静默失败或文件“不见了”
这些情况会导致 Stash Changes 看似点了却没反应,或恢复后缺文件:
- 工作区正处在
rebase或merge中:git stash会报error: cannot stash in the middle of a merge,WebStorm 也静默失败 - 文件被
.gitignore或.git/info/exclude排除,IDE 直接跳过,不提示 - 改的是二进制文件(如图片、
.jar),且未配置 Git diff 支持,IDE 可能判定“无变化”而拒绝 stash - 权限变更(如
chmod +x)默认不记录,GUI 无开关控制
stash 存在本地仓库的 .git/refs/stash,是 Git 原生 ref,不是 WebStorm 缓存 —— 所以终端执行 git stash list 能立刻看到,且可跨 IDE/命令行操作。但要注意:Git 默认 30 天后可能通过 gc 清理掉旧 stash,别依赖它长期存档。

















