Git は、ある時点で実際にリポジトリの一部である場合にのみ、ディレクトリまたはファイルを削除します。ブランチにこれらのファイルが含まれていない場合、Git はそれらにまったく触れません。たとえそうであっても。データは失われません。
それを理解するには、Git でのチェックアウト時に何が起こるかを理解する必要があります。ブランチ A にいて、ブランチ B をチェックアウトしたいとします。Git が行うことは、ブランチ A に含まれていてクリーンな(つまり、コミットされていない変更がない) すべてのファイルを削除することです。次に、Git はブランチ B からすべてのファイルを作成します。ここで、ブランチ A がファイルを追跡したがブランチ B が追跡しなかった場合、そのファイルはチェックアウト時に削除されます。同じことがディレクトリにも当てはまります (Git はファイルのみを追跡し、ディレクトリは必要に応じて作成/削除されるため)。しかし、ブランチ A に戻ると、ファイルは再び復元されています。
これを要約すると、ファイルが Git リポジトリの一部であり、新しいチェックアウト ターゲットにそのファイルが含まれていない場合にのみ、ファイルが削除されます。それ以外の場合は、そのままの場所に残されます (Git はそれについてさえ知らないため)。
したがって、そのディレクトリ内のファイルを Git 内で追跡したくない場合は、それを に.gitignore
追加し、リポジトリに手動で追加しないでください。