跳到主要内容

07 · Stash

状态:✅ 已实现 · 范围:v1 · 工程参考:../spec.md

创建 stash​

入口:仓库右键菜单(Stash…,或在 Source Control 中勾选文件后的 Stash 所选路径)、Source Control 分区头部的 Stashes…(打开列表)、命令面板,以及列表底部的 新建 stash…。

选项默认含义
消息空显示在 stash 列表中的描述(如 "wip before rebase")。
包含未跟踪文件关新文件也一并 stash。
保留 index关已暂存内容在 stash 后仍保持暂存状态留在工作树。路径子集模式下不提供。
路径子集—先选中文件/文件夹,再"Stash 所选路径"——只 stash 这些改动。

创建后,被 stash 的路径在工作树中恢复干净,仓库徽标同步更新。

Stash 列表​

  • 从仓库右键菜单或 Source Control 分区头部打开为对话框;同时以 ⚑n 徽标概要显示(第 01 页)。
  • 每条记录:消息、来源分支、相对时间与文件数。展开可列文件;点击文件打开该 stash 中该文件的 diff。
  • Stash 是仓库级的(该仓库所有 worktree 共享),apply 时作用于当前 worktree 的工作树。
操作行为
Apply应用但保留记录。
Pop应用成功后移除记录;若应用时产生冲突,记录会保留并进入冲突流程(第 06 页)——绝不静默丢失。
Drop删除记录;会先创建 backup ref(可撤销,第 06 页)。
展开列出该记录中的文件,点击任一行在编辑区打开该文件的 diff。

与其他操作的协作​

  • Checkout、pull、rebase 在工作树脏时可执行"自动 stash"。临时 stash 使用生成的消息(GitTreeDesk: auto-stash before <操作名>),操作完成后自动恢复。
  • 若自动恢复发生冲突,stash 记录会被保留并以气泡通知提示——自动流程绝不丢弃你的改动。恢复失败的详情也会记入 Output 面板。
  • 有进行中的操作(merge/rebase……)时禁止新建、apply 与 pop;弹窗会先提供 Continue/Abort。drop 允许执行,因为记录会先备份。