VSCode的Git Stash功能默认仅stash已跟踪文件,不处理未跟踪文件、二进制文件及冲突状态;全局stash必须通过命令面板调用Git: Stash,执行git stash push -m "VS Code stash",且不支持传参;未跟踪文件需终端运行git stash push -u,pop失败常因冲突静默导致。

VSCode 的 Git Stash 功能能用,但默认只 stash 已跟踪(tracked)文件的修改;新文件、二进制文件、冲突状态不处理,也不是“点一下就全藏好”的傻瓜操作——得清楚它管什么、不管什么,才不会误以为功能失效。
Git: Stash 命令面板调用是唯一可靠入口
源代码管理侧边栏没有独立 stash 按钮,右键菜单里的 Stash Changes 仅对选中文件生效(实际仍 stash 全局所有已跟踪修改),而真正全局暂存必须走命令面板。
- 按
Ctrl+Shift+P(Windows/Linux)或Cmd+Shift+P(macOS),输入Git: Stash回车 - 它执行的是
git stash push -m "VS Code stash",消息不可跳过,也不支持传参(如-S或-u) - 如果工作区存在未解决的合并冲突,会直接报错:
error: Cannot save the current index state,不会静默失败 - 右键单文件触发
Stash Changes更安全:适合只想隔离某几个改动,避免卷入其他未提交变更
为什么 stash 后文件还在“更改”列表里?
这不是 bug,是 Git 的设计边界:git stash 默认只处理「已跟踪」且「已修改/已暂存」的文件。刚新建、没 git add 过的文件(untracked)根本不会被包含。
监控一个或多个 GitCode 仓库的 PR,通过 OpenClaw Gateway 自动执行 AI 审查,发布 PR 评论,并发送钉钉和企业微信通知。
- 例如你新建了
.env并编辑,但没git add .env,执行Git: Stash后它仍显示在“更改”列表——这是正常行为 - 要 stash 未跟踪文件,必须切终端运行:
git stash push -u -m "with untracked"(-u等价于--include-untracked) -
-a(--all)会连.gitignore里的文件也 stash,一般没必要,反而增加恢复复杂度 - 长期想让图形化 stash 自动包含新文件?在 VSCode 设置中搜
git.untrackedChanges,设为all(但依然不支持-S或冲突时跳过)
Pop Stash 失败却不提示?其实是冲突卡住了
VSCode 点 Pop Stash 本质是执行 git stash pop,但遇到冲突时 UI 不弹窗、不报错,只让 Git 图标变红,或“更改”列表突然多出带冲突标记的文件。
- 先在终端跑
git status,看是否提示both modified:或unmerged paths - 想安全预览再应用?VSCode 不支持
git stash show -p,得手动进终端查:git stash show -p stash@{0} -
Pop失败后,stash 记录还在,但工作区已半途卡住;建议改用git stash apply stash@{0}+git stash drop stash@{0}分步控制 - 二进制文件(如图片、
.zip)被 stash 后 pop 冲突时,Git 直接拒绝,无法自动合并,只能手动还原原始版本再处理
Stash 列表不刷新、历史 stash 找不到?VSCode 原生不支持
VSCode 不展示完整 git stash list 输出,也不在源代码管理视图里显示 stash 记录。所谓“Stashes”面板只在你主动打开后才出现,且仅支持对最新一条操作。
- 执行
Git: Show Stash List(命令面板输入)能看到类似stash@{0}: On main: VS Code stash的条目,选中即执行git stash pop(注意:是 pop,不是 apply) - VSCode 不支持查看 stash 内容差异,要看改了啥,必须进终端跑
git stash show -p stash@{0} - 要操作更早的 stash(比如
stash@{2}),必须用命令行:git stash apply stash@{2} - VSCode 默认不显示 stash 时间戳,全靠
-m消息区分;Git 本身也不存创建时间,只按 LIFO 排序(最新在最上)
真正麻烦的从来不是怎么 stash,而是 stash 里混了未跟踪文件却没意识到,或者 pop 时冲突静默失败导致工作区卡死——这些边界行为,恰恰是日常踩坑最多的地方。

















