VSCode中触发Git stash必须通过命令面板(Ctrl+Shift+P/Cmd+Shift+P)输入“Git: Stash”执行,无默认快捷键;右键单文件或源代码管理视图“⋯→Stash Changes”均为全量stash,仅处理已跟踪文件,未add的新文件仍显示在更改列表。

Git: Stash 不是快捷键触发的功能,没有默认绑定的按键组合。它必须通过命令面板手动唤出,按 Ctrl+Shift+P(Windows/Linux)或 Cmd+Shift+P(macOS)打开命令面板后输入并执行。
简单易用的 GitCode API SKILL,提供 CLI 和轻量级 Python SDK 两种调用方式,用于与 GitCode 的 REST API 进行交互。支持加密访问令牌、异步调用以及完善的类型提示。 - 文档:https://gitcode-api.readthedocs.io/ - PyPI 页面:https://pypi.org/project/gitcode-api - GitHub 仓库:https://github.com/Trenza1ore/GitCode-API
怎么在 VSCode 里真正触发 stash:不是右键,也不是快捷键
- VSCode 没有为
Git: Stash预设全局快捷键,也不响应 Ctrl+K、Ctrl+S 或其他常见组合键 - 右键单个文件 → “Stash Changes” 是全量 stash(作用于整个工作区,不是只 stash 这个文件)
- 源代码管理视图右上角 ⋯ 菜单里的
Stash Changes和命令面板里的Git: Stash行为一致,都等价于git stash push - 如果你刚
git add过部分文件,VSCode 会弹窗让你选是否包含暂存区改动;没弹窗 ≠ 没执行,只是它自动跳过了选择逻辑
为什么点了“Stash Changes”但文件还在“更改”列表里
- 这不是失效,是 Git 的作用域限制:
-
git stash默认只处理 已跟踪(tracked)且已修改/已暂存 的文件 - 新建但未
git add的文件(untracked),比如.env、config.local.json,stash 后依然显示在列表中 - 被
.gitignore忽略的路径(如node_modules/)无论是否 tracked,都不会被 stash
-
- UI 刷新延迟也可能导致视觉残留:按
Ctrl+R强制重绘源代码管理面板,或关闭再打开该视图
如何精准 stash 部分文件(不是全部,也不是单个)
- VSCode 1.85+ 支持多选后 stash,但入口隐蔽:
- 在“源代码管理”面板的“更改”区域,用
Ctrl(或Cmd)+ 点击多选文件,或Shift连选 - 点击右上角 ⋯ → 选择
Stash Selected Changes
- 在“源代码管理”面板的“更改”区域,用
- 注意:这个操作仍不包含 untracked 文件,哪怕你勾选了它们——未
git add的新文件不会进 stash - 若需 stash 单个 untracked 文件,只能切终端执行:
git stash push -u --keep-index -- <code>.env
stash 后恢复失败,冲突没提示?这是设计使然
-
Git: Pop Stash实际执行git stash pop,遇到冲突时 VSCode 不会弹窗警告,也不会高亮冲突块 - 冲突文件会同时出现在“更改”和“暂存”区域,文件名旁带
CONFLICT标记 - 双击该文件,VSCode 以三栏 diff 视图展示当前版本 / stash 版本 / 共同祖先,灰色背景标出冲突段
- 手动编辑解决后,必须右键该文件 →
Stage Changes(不是“暂存全部”),否则git stash pop的后续清理会卡住
真正容易被忽略的是:stash 不是“隐藏”,而是“移出工作区+暂存区”,它不改变文件状态判断逻辑;你得清楚哪些文件属于 tracked、哪些是 untracked,否则所有“没消失”的现象,都是 Git 在按规则办事。

















