VS CodeのSettings Syncで別PCの設定が入り込み、元の状態に戻したい場合は、どちらが正しいか分からないまま「Merge」や「Replace Local」を選ばないことが重要です。
迷ったときは、まずMerge Manually...またはShow Conflictsで差分を確認します。そのうえで、今操作しているPCの設定を残すならAccept Local、クラウド上の設定を残すならAccept Remoteを選びます。すでに上書きされた場合も、Settings Sync: Show Synced Dataやローカルバックアップから以前の設定を復元できます。([Visual Studio Code][1])
VS CodeのLocalとRemoteは何を指すのか
Settings Syncの競合を正しく解決するには、最初にLocalとRemoteの意味を理解しておく必要があります。
Local:現在操作しているPCのVS Codeに保存されている設定Remote:VS Codeの同期サービス上に保存されている設定- 別PC:Remoteへ設定をアップロードする端末の一つ
つまり、Remoteは「もう一台のPCそのもの」ではありません。複数のPCが同じアカウントで同期している場合、最後に同期したPCの変更がRemoteへ反映されている可能性があります。
そのため、「古いPCを残したいからRemoteを選ぶ」という判断は危険です。Remoteの更新日時と内容を確認してから選びましょう。
Merge・Replace Local・Merge Manuallyの違い
別のPCですでにSettings Syncを利用しており、新しいPCでも同期を有効にすると、次の選択肢が表示されることがあります。
| 選択肢 | 動作 | 適している状況 |
|---|---|---|
Merge | 現在のPCとクラウドの設定を統合する | 両方の設定をできるだけ残したい |
Replace Local | 現在のPCの設定をクラウドの設定で上書きする | クラウド側が正しいと確認できている |
Merge Manually... | 設定を項目ごとに比較して解決する | どちらを残すべきか判断できない |
Replace Localを選ぶと、現在のPCにある設定がRemoteの内容で置き換えられます。「現在のPCをクラウドへ反映する」という意味ではないため、方向を間違えないようにしてください。([Visual Studio Code][1])
迷った場合はMerge Manually...が最も安全です。 Mergeは便利ですが、「以前の設定に戻すための取り消し機能」ではありません。不要な変更も統合される可能性があるため、完全に元へ戻したい場面では手動比較が適しています。
Accept Local・Accept Remoteの意味
同期中に競合が検出されると、Accept Local、Accept Remote、Show Conflictsなどが表示されます。
| 選択肢 | 結果 |
|---|---|
Accept Local | 現在のPCの設定でクラウド側を上書きする |
Accept Remote | クラウド側の設定で現在のPCを上書きする |
Show Conflicts | LocalとRemoteの差分を表示する |
たとえば、現在使っているPCの設定が正しく、別PCの同期によってクラウド側だけが変わってしまった場合は、Accept Localを選びます。
反対に、クラウド側に正しい設定が残っており、現在のPCだけが壊れている場合は、Accept Remoteを選びます。
両方に残したい変更がある場合は、Show Conflictsで差分を開き、ローカルの設定ファイルを手動で編集してからAccept Localを選びます。これにより、手動で統合した内容をクラウド側へ反映できます。([Visual Studio Code][1])
どちらを残すべきか迷ったときの判断表
| 現在の状況 | 選ぶ操作 |
|---|---|
| 現在のPCが正しく、クラウド側が間違っている | Accept Local |
| クラウド側が正しく、現在のPCが間違っている | Accept Remote |
| 新しいPCをクラウドと完全に同じ状態にしたい | Replace Local |
| 両方のPCに必要な変更がある | Merge Manually...またはShow Conflicts |
| どちらが正しいか分からない | すぐに確定せず、同期履歴とバックアップを確認 |
| すでに間違った設定で上書きされた | Settings Sync: Show Synced Dataから復元 |
「このPCが正しいはず」という記憶だけで選ばず、設定内容と更新日時を見て判断するのが安全です。
復元作業の前に確認すること
同期に使っているアカウントを確認する
VS CodeのSettings Syncでは、MicrosoftアカウントまたはGitHubアカウントを利用します。Microsoftアカウントには個人用アカウントやAzureアカウントを利用できます。([Visual Studio Code][1])
画面左下のアカウントメニューや管理メニューから、次の点を確認してください。
- どのMicrosoftアカウントまたはGitHubアカウントで同期しているか
- 2台のPCが同じアカウントを使用しているか
- 仕事用と個人用のアカウントを取り違えていないか
- 別のアカウントの同期履歴を見ていないか
違うアカウントでサインインしていると、期待しているRemoteの履歴が表示されません。
Stable版とInsiders版を確認する
VS CodeのStable版とInsiders版は、初期状態では別のSettings Syncサービスを使用します。そのため、同じアカウントでサインインしていても、同期データが一致しない場合があります。
Insiders版ではStable版の同期サービスを選択できますが、バージョン差による互換性の問題が起きる可能性もあります。履歴が見つからない場合は、利用しているVS Codeの種類も確認してください。([Visual Studio Code][1])
使用中のプロファイルを確認する
Settings Syncの同期対象にはProfilesも含まれます。プロファイルを切り替えている場合、同じPCでも設定、拡張機能、表示状態が異なることがあります。([Visual Studio Code][1])
比較するときは、両方のPCで同じプロファイルを開いているか確認しましょう。
組み込み機能と同名拡張機能を区別する
現在のVS CodeにはSettings Syncが組み込まれています。一方、Marketplaceには「Settings Sync」という名称の第三者製拡張機能もあり、こちらはGitHubの非公開Gistを使う別の仕組みです。
両者は同期データや復元方法が異なります。この記事で説明しているのは、VS Code組み込みのSettings Syncです。管理メニューまたはアカウントメニューにあるBackup and Sync Settings...から利用する機能を対象としています。([Visual Studio Code][1])
復元前にバックアップを確保する
競合画面で操作を確定する前に、現在残っている履歴を別の場所へコピーしておきます。
コマンドパレットを開き、次のコマンドを実行してください。
Settings Sync: Open Local Backups Folder
ローカルバックアップフォルダーは、Settings、Extensionsなどの種類ごとに分かれており、バックアップされた時刻を含むファイル名で保存されています。([Visual Studio Code][1])
開いたフォルダーは、そのまま編集せず、フォルダー全体をデスクトップや別ドライブへコピーしておくと安全です。あわせて、現在のsettings.json、keybindings.json、ユーザースニペットも別フォルダーへ保存しておきましょう。
ローカルバックアップや設定ファイルには、ユーザー名、フォルダーパス、拡張機能の設定などが含まれることがあります。外部へ共有する場合は、トークン、秘密鍵、接続先、個人情報が含まれていないか確認してください。
すでに設定が変わった場合の復元手順
基準にしないPCの同期を一時的に止める
最初に、「最終的に残したい設定の基準にしないPC」の同期を一時停止します。
コマンドパレットから次のコマンドを実行します。
Settings Sync: Turn off
または、Settings Sync: Show Synced Dataを開き、Synced Machinesから対象PCの同期を無効にできます。VS Codeでは、同期中のマシンを一覧表示し、別のマシンのSettings Syncを停止できます。([Visual Studio Code][1])
同期を無効にするときに、クラウド上のデータを消去する選択肢が表示される場合があります。単に復元作業を行うだけなら、クラウドデータの消去は選択しないでください。
Show Synced Dataを開く
設定を復元したいPCでコマンドパレットを開き、次を実行します。
Settings Sync: Show Synced Data
Settings Syncビューには、主に次の情報が表示されます。
SYNC ACTIVITY (REMOTE):クラウド側の同期履歴SYNC ACTIVITY (LOCAL):現在のPCに保存された同期履歴SYNCED MACHINES:同じアカウントで同期しているPC
Localの同期履歴は初期状態で非表示です。Settings Syncビュー右上のメニューからViewsを開き、Sync Activity (Local)を有効にします。([Visual Studio Code][1])
更新日時と内容を比較する
Settings、Keyboard Shortcuts、Extensionsなどを展開し、設定が変わる直前の履歴を探します。
日時だけで決めず、履歴を開いて次の項目を確認してください。
- エディターのフォントや文字サイズ
- 自動保存や整形に関する設定
- 保存時のフォーマット設定
- テーマや表示言語
- キーボードショートカット
- インストール済み拡張機能
- 拡張機能ごとの設定
- プロファイル
「変更前の日時に近い履歴」でも、すでに別PCから誤った設定がアップロードされている場合があります。実際のJSONや拡張機能一覧を開き、必要な値が残っているか確認しましょう。
必要な項目だけを復元する
目的の履歴が見つかったら、履歴項目に表示される復元操作を使用します。
一度にすべてを戻すのではなく、次の順に一項目ずつ復元するとトラブルを切り分けやすくなります。
- Settings
- Keyboard Shortcuts
- User Snippets
- User Tasks
- Extensions
- Profiles
- UI State
たとえば、文字サイズや保存時の整形だけが変わった場合は、Settingsだけを復元すれば十分です。Extensionsまで戻すと、必要な拡張機能が削除されたり、不要な拡張機能が再インストールされたりする可能性があります。
Remoteに履歴がない場合はローカルバックアップを探す
Remoteの履歴に目的の設定が残っていない場合は、先ほど開いたローカルバックアップフォルダーを確認します。
ファイル名に含まれる時刻を手掛かりに、変更前のJSONファイルを探してください。目的の設定が見つかったら、現在の設定と比較し、必要な部分だけを現在の設定ファイルへ戻します。
JSONを丸ごと上書きする前に、現在のファイルも別名で保存しておくと、操作をやり直せます。
バックアップの保持期間に注意する
VS Codeのローカルバックアップは、作成後30日を過ぎると自動的に削除されます。
Remoteのバックアップは、SettingsやExtensionsなど、リソースごとに最新20バージョンが保持されます。短期間に何度も同期が行われると、古い正常な履歴が20バージョンの対象外になる可能性があります。([Visual Studio Code][1])
| バックアップ | 保持条件 |
|---|---|
| ローカルバックアップ | 30日後に自動削除 |
| Remoteバックアップ | 各リソースの最新20バージョン |
誤った同期に気付いたら、追加の設定変更を繰り返す前に履歴を確認してください。復元候補を見つけた時点で、別フォルダーへコピーしておくことも重要です。
正しいPCを基準に2台をそろえる手順
どちらか一方のPCに正しい設定が残っている場合は、そのPCを一時的な「基準PC」として扱うと整理しやすくなります。
基準PCの設定をクラウドへ反映する
基準PCで競合画面を開き、内容を確認したうえでAccept Localを選びます。
これにより、基準PCのLocal設定でRemoteが上書きされます。
念のためSettings Sync: Show Synced Dataを開き、Remoteの最新履歴に正しい設定が反映されたことを確認してください。
もう一台のPCへクラウド設定を適用する
もう一台のPCでSettings Syncを再度有効にします。
このPCに残すべき独自設定がなく、基準PCと完全に同じ状態にしたい場合は、Replace Localを選びます。これにより、確認済みのRemote設定で現在のPCが上書きされます。
もう一台のPCにも残したい設定がある場合は、MergeではなくMerge Manually...を選び、差分を確認してください。
同期しても同じにならない設定がある
Settings Syncを利用していても、すべての項目がすべての環境で同一になるわけではありません。
マシン固有の設定は初期状態で同期されない
machineまたはmachine-overridableスコープの設定は、PC固有の値であるため、初期状態では同期されません。
同期対象外の設定は、settingsSync.ignoredSettingsでも指定できます。パス、ターミナル、SDKの場所などがPCごとに異なる場合は、無理に同じ値へそろえないほうが安全です。([Visual Studio Code][1])
除外した拡張機能は同期されない
拡張機能は通常、インストール状態やグローバルな有効・無効状態が同期されます。ただし、拡張機能ビューまたはsettingsSync.ignoredExtensionsで除外した拡張機能は同期されません。([Visual Studio Code][1])
特定の拡張機能だけ別PCに現れない場合は、同期障害と決めつける前に除外設定を確認してください。
キーボードショートカットはOSごとに分かれる
キーボードショートカットは、初期状態ではプラットフォームごとに同期されます。
WindowsとMacなど、異なるOS間で同じショートカットを使いたい場合は、settingsSync.keybindingsPerPlatformの設定を確認します。([Visual Studio Code][1])
SSH・WSL・コンテナー内の拡張機能は別扱い
VS Codeは、SSH接続、WSL、開発コンテナーなどのRemoteウィンドウに対して、拡張機能をSettings Syncで同期しません。
ローカル側に拡張機能が存在していても、Remote SSH先やWSL内には別途インストールが必要な場合があります。「別PCで拡張機能が消えた」のではなく、ローカルとリモート環境の違いである可能性も確認してください。([Visual Studio Code][1])
よくある失敗と避け方
とりあえずMergeを選ぶ
Mergeは、どちらか一方の設定へ戻す操作ではありません。両方の変更を統合するため、不要な変更まで残る可能性があります。
完全に以前の状態へ戻したい場合は、履歴から復元するか、手動比較を選びます。
Accept LocalとAccept Remoteを逆に選ぶ
Accept Localは現在のPCを残し、クラウドを上書きします。
Accept Remoteはクラウドを残し、現在のPCを上書きします。
ボタンを押す前に、「何を残すか」ではなく「どちらが上書きされるか」まで声に出して確認すると間違いを防げます。
同期停止時にクラウドデータまで削除する
Settings Syncを停止するとき、クラウド上の同期データを削除する選択肢まで有効にすると、Remoteの履歴を失う可能性があります。
アカウントを切り替える場合や復元作業を行う場合は、通常の同期停止だけにとどめます。
復元後すぐに古いPCを起動する
復元後、古い設定を持つPCの同期をすぐ再開すると、そのPCから再び不要な設定がアップロードされる可能性があります。
先に基準PCとRemoteの状態を確認し、その後で別PCの同期を有効にしてください。
履歴が表示されないときの確認項目
Settings Sync: Show Synced Dataに期待する履歴がない場合は、次の順で確認します。
- MicrosoftアカウントとGitHubアカウントを取り違えていないか
- 仕事用と個人用のアカウントが逆になっていないか
- Stable版とInsiders版を混同していないか
- 別のプロファイルを開いていないか
- 組み込みSettings Syncではなく、第三者拡張機能を使っていないか
- Localの同期履歴表示が無効になっていないか
- ローカル30日、Remote最新20バージョンの保持範囲を超えていないか
- SSH、WSL、コンテナー側の拡張機能を探していないか
同期処理自体に問題がある場合は、出力パネルのLog (Settings Sync)を確認します。認証に関する問題では、Accountのログも確認対象になります。([Visual Studio Code][1])
組織が管理するPCでは、サインイン方法や利用できる機能が制限されている場合があります。個人PCと画面や動作が異なるときは、組織の管理者が定めた設定も確認してください。
安全に元へ戻すための手順まとめ
VS Codeの設定同期が別PCの影響で変わった場合は、次の順序で対応します。
- どのMicrosoftまたはGitHubアカウントで同期しているか確認する
- Stable版、Insiders版、プロファイルの違いを確認する
- 基準にしないPCの同期を一時的に停止する
Settings Sync: Open Local Backups FolderでバックアップをコピーするSettings Sync: Show Synced DataでLocalとRemoteの履歴を比較する- 現在のPCを残すなら
Accept Localを選ぶ - クラウド側を残すなら
Accept RemoteまたはReplace Localを選ぶ - 両方に必要な変更があるなら
Merge Manually...で解決する - 復元後にRemoteの最新履歴を確認する
- もう一台のPCの同期を再開し、必要に応じて
Replace Localを選ぶ
最も重要なのは、Remoteを別PCそのものだと思い込まないことと、競合画面で確定する前に同期履歴を確認することです。判断できない場合は手動比較を選び、Settings、ショートカット、拡張機能を一項目ずつ復元してください。
[1]: https://code.visualstudio.com/docs/configure/settings-sync “Settings Sync”

コメント