VSCodeでファイルや設定が消える原因と対策

採用はこちら

VSCodeを使っていると、「昨日まであったファイルが見つからない」「設定や拡張機能が初期化されたように見える」といったトラブルが起こることがあります。

ただし、実際にはVSCodeがファイルや設定を削除しているとは限りません。

ファイルが非表示になっているだけだったり、別のフォルダーやGitブランチを開いていたり、ProfileやRemote環境が切り替わっていたりするケースも多くあります。

ファイルや設定が消えたと感じた場合は、原因を一つずつ切り分けて確認することが重要です。

目次

ファイルが削除されたのではなく非表示になっている

files.excludeによってExplorerから隠れている

VSCodeには、特定のファイルやフォルダーをExplorer上から非表示にするfiles.excludeという設定があります。

例えば、次のような設定がある場合です。

{
  "files.exclude": {
    "**/*.log": true,
    "**/dist": true,
    "**/.env": true
  }
}

この設定では、.logファイルやdistフォルダー、.envファイルがディスク上に存在していても、VSCodeのExplorerには表示されません。

そのため、ファイルが消えたように見えた場合は、まずWindowsのエクスプローラーやmacOSのFinderなどで実際にファイルが存在するか確認しましょう。

.gitignoreの内容がExplorer表示に影響している

VSCodeでは、explorer.excludeGitIgnoreが有効になっていると、.gitignoreに指定されているファイルやフォルダーがExplorerから非表示になることがあります。

そのため、

.gitignore
explorer.excludeGitIgnore
files.exclude

を確認することで、単なる非表示なのか、本当に削除されたのかを切り分けられます。

なお、.gitignoreそのものにファイルを書いただけで、実際のファイルが削除されるわけではありません。

search.excludeは検索対象を除外する設定

search.excludeは、Explorerからファイルを消すための設定ではありません。

主にVSCodeの検索対象から特定のファイルやフォルダーを除外するために使われます。

そのため、

「Explorerにはあるが検索結果に出てこない」

という場合は、search.excludeを確認するとよいでしょう。

一方、

「Explorerからファイルそのものが見えない」

という場合は、files.excludeやexplorer.excludeGitIgnoreの確認を優先します。

別のフォルダーやワークスペースを開いている

同じ名前の別フォルダーを開いている

ファイルが消えたように見える原因として非常に多いのが、別のフォルダーを開いているケースです。

例えば、普段は次のフォルダーで作業していたとします。

C:\Users\user\Documents\project

ところが、次のフォルダーを開いてしまう場合があります。

C:\Users\user\Desktop\project

どちらもフォルダー名がprojectなので、一見すると同じプロジェクトに見えます。

しかし、中身は別のフォルダーです。

この場合、以前作成したファイルが消えたように感じることがあります。

現在開いているパスを確認する

ターミナルで現在位置を確認すると、別フォルダーを開いていないか判断しやすくなります。

WindowsのPowerShellでは次のコマンドを使います。

Get-Location

macOSやLinux、WSLでは次のコマンドを利用できます。

pwd

ファイルが見つからない場合は、フォルダー名だけではなく絶対パスまで確認することが重要です。

User SettingsとWorkspace Settingsの違いで設定が変わる

Workspace Settingsが優先されている

VSCodeには、全体に適用されるUser Settingsと、プロジェクト単位で適用されるWorkspace Settingsがあります。

例えばUser Settingsで、

"editor.fontSize": 16

と設定していても、Workspace Settingsに、

"editor.fontSize": 12

と設定されていれば、そのプロジェクトではフォントサイズが12になります。

このような場合、User Settingsが消えたわけではありません。

Workspace Settingsによって設定が上書きされているだけです。

.vscode/settings.jsonを確認する

単一フォルダーのプロジェクトでは、Workspace Settingsが次のような場所に保存されることがあります。

.vscode/settings.json

一方、Multi-root Workspaceを使用している場合は、.code-workspaceファイル側に設定が保存される場合もあります。

そのため、設定が突然変わった場合は、User SettingsだけでなくWorkspace Settingsも確認しましょう。

VSCodeのProfileが切り替わっている

Profileごとに設定や拡張機能を分けられる

VSCodeにはProfiles機能があります。

Profileごとに、例えば次のような項目を分けて管理できます。

設定
拡張機能
キーボードショートカット
スニペット
タスク
UI状態

そのため、Profileが切り替わると、

テーマが変わった
フォントが変わった
拡張機能がなくなった
ショートカットが変わった

といった現象が起こることがあります。

実際には設定が削除されたのではなく、別Profileが有効になっている可能性があります。

プロジェクトごとにProfileが関連付けられている場合もある

Profileはフォルダーやワークスペースに関連付けることができます。

そのため、別のプロジェクトを開いただけで異なるProfileへ切り替わり、設定が変わったように感じることもあります。

設定や拡張機能がおかしいと感じた場合は、現在使用しているProfileを確認しましょう。

Temporary Profileを使用していた

Temporary Profileは一時的な環境

VSCodeにはTemporary Profileという一時Profileがあります。

Temporary Profileは通常のProfileとは異なり、永続的な作業環境として利用することを前提としていません。

例えば、

Temporary Profileを作成
↓
設定を変更
↓
拡張機能をインストール
↓
VSCodeを終了
↓
後から設定が残っていない

という状況が起こる可能性があります。

長期間利用する設定や拡張機能は、通常のProfileで管理した方が安全です。

Settings Syncによって設定が変わったように見える

別PCの変更が同期されることがある

VSCodeのSettings Syncを使用すると、複数のPC間で設定や拡張機能などを同期できます。

例えば、

PC Aで設定を変更
↓
Settings Syncで同期
↓
PC Bにも変更が反映される

という動作が行われます。

そのため、別PCで行った変更によって、現在使用しているPCの設定も変わったように感じる場合があります。

Settings Syncが勝手に設定を削除しているというよりも、同期結果によって設定状態が変化している可能性を考える必要があります。

同期履歴を確認する

設定が急に変わった場合は、Settings Syncの同期データや履歴を確認すると原因を調べやすくなります。

特に複数台のPCでVSCodeを利用している場合は、どの端末で設定を変更したのかも確認するとよいでしょう。

Git操作によって変更内容が消える

git restoreで未コミットの変更を戻した

次のようなコマンドを実行すると、

git restore .

Gitで追跡されているファイルの未コミット変更が戻されます。

例えば、

既存ファイルを編集
↓
まだcommitしていない
↓
git restore .
↓
編集内容が元に戻る

という状態です。

ただし、Gitでまだ追跡されていない新規ファイルまでgit restore .ですべて削除されるわけではありません。

git reset –hardを実行した

特に注意が必要なのが、

git reset --hard

です。

このコマンドは、Gitのindexやworking treeを指定したcommitの状態へ戻します。

そのため、追跡されているファイルの未コミット変更が失われる可能性があります。

状況によっては、処理の妨げになる一部の未追跡ファイルやディレクトリにも影響することがあります。

内容を理解せずに実行しないことが重要です。

git cleanで未追跡ファイルを削除した

Gitでまだ追跡されていないファイルを削除するコマンドとして、git cleanがあります。

実際に削除するときには、例えば次のようなコマンドが使われます。

git clean -f

ディレクトリも含めて削除する場合は、

git clean -fd

などが使われます。

まだgit addしていない新規ファイルがある場合は特に注意が必要です。

削除前には、

git clean -n

または、

git clean --dry-run

を実行すると、削除対象を事前に確認できます。

Gitブランチを切り替えたことでファイルが消えたように見える

ブランチごとに存在するファイルが異なる

Gitでは、ブランチごとにファイル構成が異なることがあります。

例えば、

git switch main

を実行した場合、現在のブランチには存在していたファイルがmainブランチには存在しないことがあります。

その場合、ファイルは削除されたように見えますが、元のブランチに戻せば再び表示される可能性があります。

現在のブランチを確認する

現在のブランチは次のコマンドで確認できます。

git branch --show-current

Gitの状態全体を確認したい場合は、

git status

も有効です。

突然ファイルがなくなった場合は、ブランチが変わっていないか確認しましょう。

WSLやSSHなど別環境を開いている

ローカルとRemoteは別のファイルシステムの場合がある

VSCodeでは、WSLやSSH、Dev ContainersなどのRemote環境を利用できます。

このとき、VSCodeの見た目はほとんど同じでも、実際に操作しているファイルシステムが異なる場合があります。

例えばWindows側の、

C:\Users\user\project

と、WSL側の、

/home/user/project

は別の場所です。

そのため、Remote環境へ切り替えたことでファイルが消えたように感じることがあります。

Remote接続状態を確認する

ファイルが突然見えなくなった場合は、

WSL
SSH
Dev Containers
Remote Tunnels

などへ接続していないか確認します。

あわせてターミナルでpwdなどを実行し、現在開いているパスも確認すると原因を特定しやすくなります。

Dev ContainersやDockerでファイルが消える

コンテナ内部だけに保存している

Dockerコンテナには、コンテナ内部の一時的な書き込み領域があります。

この領域だけに重要なファイルを保存していると、コンテナを削除・再作成した際にファイルを失う可能性があります。

そのため、開発用の重要なファイルは、

bind mount
Docker Volume

などを利用して永続化することが重要です。

bind mountとDocker Volumeを理解する

bind mountでは、ホストPC上のフォルダーをコンテナ内部へマウントします。

例えば、

ホスト
C:\project

↓

コンテナ
/workspace

のような構成です。

この場合、ファイル本体はホスト側にも存在します。

一方、Docker Volumeを利用している場合は、Dockerが管理するVolume領域へ保存されます。

どこにファイルが保存されているのかを把握しておくことが重要です。

workspaceMountやvolumesを確認する

Dev Containersを利用している場合は、

devcontainer.json
docker-compose.yml
compose.yaml

などを確認します。

特に、

workspaceMount
workspaceFolder
mounts
volumes

の設定を確認すると、実際にどの場所がマウントされているのか判断できます。

拡張機能やスクリプトによってファイルが削除される

ビルド処理やclean処理に注意する

ファイル削除の原因がVSCode本体ではなく、プロジェクト側のスクリプトというケースもあります。

例えば、

npm scripts
Makefile
Gradle
Webpack
Vite
Gulp
CI用スクリプト

などです。

次のようなコマンドを実行したとします。

npm run clean

その処理の内部に、

rm -rf dist

が含まれていれば、distフォルダーは削除されます。

「VSCodeからファイルが消えた」と感じても、実際にはタスクやビルド処理が削除している可能性があります。

OneDriveなどのクラウド同期が影響する

同期対象フォルダーで開発している

Windowsでは、DocumentsやDesktopなどがOneDrive配下になっていることがあります。

例えば、

C:\Users\user\OneDrive\Documents\project

のような場所で開発している場合、VSCodeだけでなくOneDriveもファイルを管理しています。

そのため、

別PCからの削除
同期競合
ファイル移動
アカウント変更
同期停止

などが影響する可能性があります。

Dropbox、Google Drive、iCloud Driveなどでも同様です。

同期フォルダー外へ移動して原因を切り分ける

同期トラブルが疑われる場合は、

C:\dev\project

のような同期対象外のローカルフォルダーへプロジェクトを移し、挙動を確認する方法があります。

必ず同期フォルダー外で開発しなければならないわけではありませんが、トラブルの切り分けには有効です。

Stable版とInsiders版を取り違えている

ユーザーデータが別管理される

VSCodeには通常のStable版と、先行機能を利用できるInsiders版があります。

これらではユーザーデータの保存場所が分かれています。

そのため、普段Stable版を使用している人がInsiders版を起動すると、

設定がない
テーマが違う
拡張機能がない

と感じることがあります。

実際には設定が削除されたのではなく、別のVSCode環境を起動している可能性があります。

ファイルが消えた場合の復旧方法

VSCodeのLocal Historyを確認する

VSCodeにはLocal History機能があります。

ファイルを保存した際の過去の内容が記録されている場合、Timelineなどから以前の状態を確認できます。

また、削除されたファイルについてもLocal Historyに履歴が残っていれば復元できる可能性があります。

ただし、Local Historyはすべてのファイルを必ず保存する機能ではありません。

ファイルサイズや除外設定などによって履歴が残っていない場合もあります。

そのため、Local Historyはあくまで復旧手段の一つとして考えるのが適切です。

Git履歴から復元する

commit済みファイルなら復旧できる可能性が高い

Gitでcommitしてあるファイルなら、Git履歴から復旧できます。

まず、

git status

で現在の状態を確認します。

ファイルの履歴を確認する場合は、

git log -- ファイル名

などを利用できます。

重要なファイルはこまめにcommitしておくことで、誤操作時の復旧がしやすくなります。

OSのゴミ箱を確認する

通常の削除ならゴミ箱に残っている可能性がある

VSCodeのExplorerから通常の削除操作を行った場合、環境や操作方法によってはOS側のゴミ箱に移動していることがあります。

そのため、

Windowsのごみ箱
macOSのゴミ箱
LinuxのTrash

なども確認しましょう。

Git管理していない新規ファイルを削除してしまった場合は、特に重要な確認項目です。

設定が消えた場合に確認するポイント

現在のProfileを確認する

設定や拡張機能が突然変わった場合は、まず現在のProfileを確認しましょう。

別Profileになっているだけなら、元のProfileへ戻すことで以前の環境に戻る可能性があります。

User SettingsとWorkspace Settingsを確認する

User SettingsとWorkspace Settingsで異なる値が設定されていないか確認します。

特定のプロジェクトだけ設定がおかしい場合は、Workspace Settingsが原因である可能性が高くなります。

Settings Syncを確認する

複数PCを使用している場合は、別PCで行った変更が同期されていないか確認します。

同期履歴を確認することで、いつ設定が変更されたのか追跡できる場合があります。

Stable版とInsiders版を確認する

起動しているVSCodeが、

Visual Studio Code
Visual Studio Code - Insiders

のどちらなのかも確認しましょう。

ファイルや設定が消えないようにする対策

Gitを利用する

最も重要な対策の一つがGitによるバージョン管理です。

例えば、

git init
git add .
git commit -m "Initial commit"

として管理を開始できます。

その後も、

git status
git add .
git commit

を定期的に行うことで、誤って変更やファイルを失った場合でも復旧しやすくなります。

GitHubやGitLabなどへpushしておけば、PC故障時のリスクも下げられます。

危険なGitコマンドを実行する前に状態を確認する

次のような操作は特に注意が必要です。

git reset --hard
git clean -f
git clean -fd

実行前には、

git status

で状態を確認しましょう。

git cleanを使用する場合は、

git clean -n

で削除対象を確認してから実行すると安全です。

Local Historyを有効にしておく

VSCodeのLocal Historyも、誤操作対策として役立ちます。

ただし、Local Historyだけに依存するのではなく、

Git
Local History
外部バックアップ

を組み合わせる方が安全です。

Profileをバックアップする

VSCodeではProfileをエクスポートできます。

大きく設定を変更する前やPCを移行する前にProfileをバックアップしておけば、環境を復元しやすくなります。

Dockerでは保存場所を明確にする

Dev ContainersやDockerを使用する場合は、

ホスト側のファイル
Docker Volume
コンテナ内部の一時領域

のどこに保存しているのかを把握しましょう。

コンテナを削除すると失われて困るデータは、一時領域だけに保存しないことが重要です。

ファイルが消えたときの確認手順

まず実際に削除されたのか確認する

VSCode上でファイルが見えなくなった場合は、次の順番で確認すると原因を特定しやすくなります。

  1. OSのExplorerやFinderでファイルが存在するか確認する
  2. 現在開いているフォルダーの絶対パスを確認する
  3. WSL・SSH・Dev Containersなどの接続状態を確認する
  4. files.excludeを確認する
  5. explorer.excludeGitIgnoreを確認する
  6. git statusを確認する
  7. 現在のGitブランチを確認する
  8. Local HistoryやTimelineを確認する
  9. Git履歴を確認する
  10. OSのゴミ箱を確認する
  11. ProfileやSettings Syncを確認する

この順番で確認することで、「見えなくなっただけなのか」「別環境を開いているのか」「本当に削除されたのか」を切り分けやすくなります。

まとめ

VSCodeでファイルや設定が消えたように見えても、VSCode本体がデータを削除したとは限りません。

ファイルの場合は、

files.excludeによる非表示
別フォルダーを開いている
Gitブランチが変わっている
git restoreやgit resetによる変更破棄
git cleanによる未追跡ファイル削除
WSLやSSHなど別環境を開いている
Dockerの保存場所が一時領域になっている
クラウド同期の影響

などが主な原因として考えられます。

一方、設定が消えたように見える場合は、

Profileの切り替え
Temporary Profile
User SettingsとWorkspace Settingsの違い
Settings Sync
Stable版とInsiders版の違い
Remote環境の設定

などを確認することが重要です。

実際にファイルを失った場合でも、Local HistoryやGit履歴、OSのゴミ箱などから復旧できる可能性があります。

普段からGitでこまめにcommitし、Local Historyやバックアップを併用しておけば、VSCodeでファイルや設定に問題が発生した際の被害を大きく減らせます。

以上、VSCodeでファイルや設定が消える原因と対策についてでした。

最後までお読みいただき、ありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次