恢复中心
破坏性操作执行前,应用会先把相关状态写到本机快照。恢复中心(⌘K 搜索“恢复中心”,或从状态栏的撤销入口进入)负责列出、预览、恢复与清理这些快照。
哪些操作会留下快照
| 操作 | 快照内容 |
|---|---|
| 丢弃文件、片段、行或批量丢弃 | 被丢弃改动的补丁;批量丢弃保存整棵工作区 |
| 删除 Stash | 该 Stash 指向的提交 |
| 硬重置 | 重置前的脏工作区 |
| 带租约强推 | 推送前的远端尖端 |
| 中止合并、变基、拣选等操作 | 中止时的工作区目录 |
快照写失败会阻止对应操作执行,而不是先破坏再补救。
保留上限
- 时间:24 小时
- 数量:200 份
- 体积:512 MiB
上限在打开仓库时检查并清理超出部分。快照目录位于应用数据目录;不可写时回退到系统临时目录。清理过期条目会永久删除文件,删除前需要确认。
恢复
恢复会先检查当前内容,再决定是否写入:
- 补丁类快照先做
git apply --check; - 文件类快照检查目标路径的现状;
- 如果快照之后文件又改过,恢复会停下来,不覆盖新内容,并保留快照供你导出或手工比对。
批量应用时,所有补丁都会在第一次写入前检查完;只要有一处冲突,就什么都不写,并列出冲突路径。
硬重置的快照恢复只写文件,不会移动 HEAD。
强推之后找回
带租约强推前会记录远端尖端,并用一个备份引用固定它。恢复时的行为是:
- 先读一次远端;
- 只有远端仍停在强推后留下的那个提交,才把旧提交重新推回去;
- 如果之后有人推送过,恢复停止且不做任何修改。
导出与删除
- 导出 — 把快照保存到指定位置,作为普通文件保留;
- 删除 — 永久删除单条快照;
- 清理过期 — 删除当前仓库中超过 24 小时的全部快照;
- 搜索 — 按路径、操作或类型过滤。
恢复失败时快照不会消失,仍可导出。
与「撤销提交」的区别
提交后 60 秒内的「撤销」是 git reset --soft,把 HEAD 退回上一个提交,改动留在暂存区,不产生快照。它只处理当前 HEAD,并且在没有进行中的操作时可用。其余破坏性操作走恢复快照。
批量丢弃中断
批量丢弃会先为整批写一份工作区快照,再开始逐路径写入,同时维护一份日志。如果进程在中间退出,重启后状态栏会提示上次批次未完成,并在恢复中心里列出这份快照。
最后更新于