VSCode中的Git Stash(贮藏)功能详解

2次阅读

git Stash 是 Git 的轻量级暂存机制,用于临时保存未提交的修改;在 vscode 中通过源代码管理视图右上角“⋯→Stash Changes”触发,支持命名、查看、应用(apply/Pop)、删除及冲突处理。

VSCode中的Git Stash(贮藏)功能详解

VSCode 的 Git Stash 功能,就是把你当前没提交的修改“暂时收起来”,不丢、不删、不提交,等以后再拿出来用。它特别适合你正在改代码,突然要切分支修个紧急 bug,又不想把未完成的改动直接 commit 的场景。

什么是 Git Stash?在 VSCode 里怎么触发?

Stash 本质是 Git 的一个轻量级暂存机制,把工作区和暂存区的变更打包存到一个里(后进先出)。VSCode 把它做进了源代码管理视图的右上角菜单中:

  • 点击源代码管理图标(Ctrl+Shift+G)→ 点击右上角 (更多操作)→ 选择 Stash Changes
  • 快捷键:默认没有绑定,但你可以自己设 —— 打开命令面板(Ctrl+Shift+P),输入 Preferences: Open Keyboard Shortcuts,搜索 git.stash,然后添加快捷键(比如 Ctrl+Alt+S)
  • 执行后会弹出输入框,建议填一句简短说明(如 “wip: user login ui”),方便后续识别

如何查看、应用和删除 Stash?

VSCode 不像命令行那样直接显示 stash 列表,但它提供了图形化入口:

  • 点开源代码管理视图右上角 → 选择 Stash List,就会打开一个侧边面板,列出所有 stash(带时间、描述、分支信息)
  • 鼠标悬停某条 stash 上,会出现 Apply(应用并保留)和 Pop(应用并移除)按钮;点一下就能恢复当时保存的修改
  • 想删某条 stash?悬停后点 delete;清空全部?点面板顶部的 Delete All

Stash 冲突了怎么办?

当你 PopApply 一个 stash,而当前工作区已有同文件的修改,VSCode 会自动检测冲突,并像处理 merge 冲突一样标出 —— 被修改的行会显示为绿色(你的)、红色(stash 的)对比块。

VSCode中的Git Stash(贮藏)功能详解

亿众购物系统

一套设计完善、高效的web商城解决方案,独有SQL注入防范、对非法操作者锁定IP及记录功能,完整详细的记录了非法操作情况,管理员可以随时查看网站安全日志以及解除系统自动锁定的IP等前台简介:  1)系统为会员制购物,无限会员级别。  2)会员自动升级、相应级别所享有的折扣不同。  3)产品可在缺货时自动隐藏。  4)自动统计所有分类中商品数量,并在商品分类后面显示。  5)邮件列表功能,可在线订阅

VSCode中的Git Stash(贮藏)功能详解 0

查看详情 VSCode中的Git Stash(贮藏)功能详解

  • 你可以手动编辑解决,保存后右键选择 Accept Current Change / Accept Incoming Change / Accept Both Changes
  • 解决完别忘了点击右上角的 (Stage Changes)把冲突标记清除,否则 Git 仍认为有未解决冲突
  • 如果中途想放弃这次 pop,可以运行 git stash apply 的反向操作(实际是重置工作区),但更稳妥的是:先 Stash Changes 当前冲突状态,再删掉刚 pop 错的那个 stash

小技巧:Stash 也能带暂存区内容

VSCode 默认只 stash 工作区修改(unstaged),但有时你已经 Stage 了一部分,也想一起存走。这时需要手动加参数:

  • 打开集成终端(Ctrl+`),运行:git stash push -S-Sinclude-untracked 不准确,正确是 -u 包含未跟踪文件;若要同时 stash 暂存区,用 git stash –include-untracked –keep-index,但 VSCode GUI 不支持该组合)
  • 所以日常建议:如果已 stage 重要改动,先 Commit 一个临时提交(比如 “temp: wip”),再切分支;回来后 Reset Last Commit (soft) 就能还原暂存状态 —— 比依赖 stash 更可控
  • 另外,勾选设置中的 Git: Suggest Smart Commit 可以减少误操作风险

基本上就这些。Stash 不复杂,但容易忽略它的局限性——它不跨机器、不自动同步、不能替代分支或临时 commit。用对时机,它就是你开发流里的一个顺手“暂停键”。

text=ZqhQzanResources