VSCode不保存未提交更改到Git,但通过自动保存和工作区恢复机制防止内容丢失;自动保存(files.autoSave)写入磁盘,恢复功能(files.hotExit、workbench.startupEditor)保障崩溃后编辑状态还原。

VSCode 本身不保存“未提交的更改”到 Git,但能自动保存文件内容、并在崩溃或重启后恢复未保存的编辑状态——这依赖于其内置的「工作区恢复」机制,而非 Git 操作。关键在于区分「文件自动保存」和「编辑会话恢复」两个独立功能。
设置文件自动保存(Auto Save)
这是最基础的防丢配置,确保你敲完代码后无需手动 Ctrl+S 就已写入磁盘:
- 打开设置(
Ctrl+,),搜索files.autoSave - 可选值有:
off(默认)、afterDelay(延迟保存,默认 1000ms)、onFocusChange(切出编辑器时保存)、onWindowChange(窗口失焦时保存) - 推荐设为
afterDelay,兼顾响应与安全;设为onFocusChange在多标签频繁切换时可能误触发保存 - 该设置作用于所有文件,无法按语言或文件类型单独开关(需借助插件如
Auto Save Plus)
启用编辑会话恢复(Restore Open Editors)
VSCode 崩溃、强制退出或更新重启后能否还原你之前打开的文件和光标位置,取决于这个功能是否开启:
- 检查设置项
workbench.startupEditor,确保不是none;推荐值是lastSession或welcomePageInEmptyWorkbench - 确认
files.hotExit为onExitAndWindowClose(默认),它控制关闭窗口时是否保留未保存更改的编辑器状态 - 注意:若启用了
files.exclude或search.exclude排除了某些路径,这些路径下的未保存文件可能不会被恢复 - 恢复只发生在同一工作区(.vscode 文件夹所在目录)内;换路径打开或用
code .临时打开的文件夹,恢复行为不可靠
Git 侧的“未提交更改”其实不需要 VSCode 特别处理
只要文件已自动保存,Git 就能检测到修改。VSCode 的源码管理视图(SCM)显示的 Modified 状态,就是基于磁盘文件与暂存区的 diff,和编辑器是否崩溃无关:
- 无需额外插件来“保存 Git 更改”——Git 只关心磁盘内容,不关心编辑器状态
- 如果你希望在关机前自动
git add -u或暂存所有修改,需用任务(tasks.json)或外部脚本,VSCode 默认不提供该行为 - 误关窗口后发现 Git 状态“丢失”,大概率是因为文件根本没保存(
files.autoSave关闭)+files.hotExit被禁用,导致编辑器内容彻底消失
真正容易被忽略的是:files.hotExit 在某些 Linux 桌面环境(如 GNOME Wayland)或远程 SSH 连接中可能失效;如果发现重启后总是丢失未保存文件,先检查该配置是否被策略覆盖,再确认 .vscode/workspaces/ 下的会话快照是否存在且可读。










