VSCode插件“同步成功”但新设备未安装或不可用,是因为仅Location: Sync的插件才真正同步;需清空sync.gist/sync.provider、用Microsoft账户登录、确保UI State启用,并检查扩展Location列是否为Sync。

VSCode插件“同步成功”但新设备上没装、或装了却不能用,不是同步功能坏了,而是你看到的列表和真正参与同步的插件根本不是一回事。
sync.provider 和 sync.gist 配置残留会强制降级到失效路径
VSCode 1.74+ 已彻底移除 GitHub 同步后端,但旧配置项仍被读取。只要 sync.provider 或 sync.gist 在设置里有值,就会跳过 Microsoft 登录流程,直连已下线的 GitHub API,结果必然是空白页、重定向循环或 failed to sign in with github 错误。
- 打开设置(
Ctrl+,),搜索sync.gist,若值非空,直接清空并保存 - 再搜
sync.provider,同样清空 - 命令面板运行
Settings Sync: Turn Off,再运行Settings Sync: Turn On—— 这次只会出现 Microsoft 登录选项 - 必须用
outlook.com/hotmail.com等 Microsoft 账户登录,GitHub 账号此时无法完成 OAuth
Extensions 同步失败不是因为没登录,而是 Location 类型不对
插件列表能显示 ≠ 插件参与同步。VSCode 按安装来源把扩展分三类:Sync、User、Workspace。只有 Location: Sync 的才受同步控制;手动用 code --install-extension 或拖拽安装的,默认是 User,不会上传,也不会覆盖。
- 命令面板运行
Developer: Show Running Extensions - 检查每行的
Location列:只有标为Sync的才算真正同步成功 - 若某插件是
User类型,需在已同步设备上重新安装(用 Extensions 视图点击安装,或Extensions: Install Extension from VSIX…) - 右键插件 →
Skip Extension When Syncing必须取消勾选,否则即使勾了 Extensions 同步项也无效
UI State 是独立开关,不开就等于没同步主题和布局
workbench.colorTheme 写进 settings.json ≠ 主题会同步。VSCode 把 UI 状态(主题、侧边栏折叠、活动编辑器顺序、终端展开状态等)打包成叫 UI State 的独立同步项,它和 settings.json 完全解耦,且默认关闭。
- 设置里搜
sync ui state,确保sync.uiState为true - 开启同步时,必须手动勾选 UI State —— 它不在
settings.json里,也不随其他项自动启用 - 即使同步了
"workbench.colorTheme": "One Dark Pro",目标设备没装该主题,VSCode 会静默 fallback 到Default Dark+,看起来像“同步失败”
最常被忽略的是 sync.gist 配置残留、Location: Sync 标识缺失、以及 UI State 开关未启用——它们不报错、不提示,只静默失效。别只盯着登录框,先查配置项、再查扩展位置、最后核对 UI State。











