VSCode中Git Stash无响应,需先确认是否为Git仓库、VSCode是否识别到仓库根目录及Git扩展是否启用;触发方式以Ctrl+Shift+P(或Cmd+Shift+P)输入“Git: Stash Changes”最稳定,右键菜单易因窗口遮挡失效;stash默认不处理未跟踪文件,恢复时优先用“Apply Stash”避免丢失修改,命名与管理仍依赖终端命令。

VSCode 里 stash 没反应?先确认 Git 仓库状态和快捷键触发路径
按 Ctrl+Shift+P(Windows/Linux)或 Cmd+Shift+P(macOS)唤出命令面板,输入 Git: Stash Changes 回车——这是唯一稳定触发 stash 的快捷入口。右键菜单里的“Stash Changes”看似方便,但实际仍走同一逻辑,且容易因窗口遮挡、焦点丢失导致弹窗卡住不显示。
常见错误现象:快捷键没反应。原因通常是:
• 当前文件夹未初始化为 Git 仓库(.git 目录不存在)
• VSCode 没识别到仓库根目录(比如打开了子目录而非项目根)
• Git 扩展被禁用(检查左侧活动栏是否有源代码管理图标,右上角是否显示分支名)
为什么点了 stash,文件还在“更改”列表里?关键看文件是否已跟踪
stash 默认只处理「已跟踪」且「已修改/已暂存」的文件。新建后从未 git add 的文件(untracked),比如刚写的 .env 或 config.local.json,stash 后依然留在“更改”列表——这不是 bug,是 Git 行为边界。
要一并暂存未跟踪文件,必须切终端执行:
• git stash push -u -m "with untracked"
• -u 等价于 --include-untracked,别用 -a(会把 .gitignore 里的也塞进去,恢复时易混乱)
注意:Git: Stash Changes 不支持传参,所以 -u/-S 这类参数在 VSCode 内置操作里完全不可用。
恢复 stash 时选错方式,可能直接丢掉修改
VSCode 提供两个恢复命令,行为差异极大:
• Git: Apply Stash → 对应 git stash apply:应用后 stash 保留在栈中,可反复试、可手动 git stash drop
• Git: Pop Stash → 对应 git stash pop:应用后自动删除该 stash,一旦冲突失败,stash 就没了
容易踩的坑:
• 执行 Pop Stash 前,当前工作区已有未提交修改 → 冲突时 VSCode 不二次确认,直接中断且 stash 消失
• Git: Show Stash List 点击某条目默认执行 pop,不是 apply,极易误操作
• 冲突发生后,编辑器只标红冲突区域,不会自动暂停流程,需手动解决并 git add 后才能继续
命名和管理 stash 条目,VSCode 做不到精细控制
VSCode 自动生成的 stash 描述是 "VS Code stash" 或空字符串,无法自定义命名,也不支持按分支、时间、关键字筛选。当你有多个 stash(比如同时在 feature/login 和 hotfix/timeout 上工作),列表里全是 WIP on main 类似字样,根本分不清哪条对应哪段改动。
真正可控的方式只有终端:
• git stash push -m "wip: login modal UX tweak"
• git stash list 查看带描述的完整记录
• git stash show -p stash@{1} 预览具体改了哪些行
• git stash drop stash@{2} 精准删掉某一条,而不是靠 VSCode 右键菜单盲删
复杂点在于:stash 是本地操作,不随 git push 同步,多设备间列表不同步;误删后只能靠 git fsck --lost-found 拼运气找回——这些都不是快捷键能绕开的问题。


















