🌊

【Git】VS Codeでサブフォルダを開くとGitブランチが表示されなくなる理由と、その確認方法

に公開

はじめに

frontend-portfolio/
├── 01_travel_spot/
│   ├── css/
│   │   └── style.css
│   ├── js/
│   │   ├── main.js
│   │   ├── constants.js
│   │   ├── Country.js
│   │   └── Spot.js
│   ├── images/
│   │   └── (ここに画像ファイルが入ります)
│   ├── index.html
│   └── README.md

この構造のポートフォリオを作り始め、VS Code で 01_travel_spot/ フォルダを開きました。
すると、左下に表示されていた ブランチ名 (main など) が消えていました。

frontend-portfolio/

01_travel_spot/

「あれ、Gitの管理下でなくなった?」と疑問に思ったので、調べて分かったことをまとめます。

結論

frontend-portfolio リポジトリの中に 01_travel_spot ディレクトリを作成した場合、
01_travel_spot は自動的に frontend-portfolio リポジトリの Git 管理下に含まれます。
ディレクトリ単位で個別に Git 管理を設定する必要はありません。

なぜブランチが表示されないのか?

VS Code では、開いているフォルダを Git リポジトリとして認識できないと、ステータスバーにブランチ名を表示しません。
01_travel_spot は親の frontend-portfolio リポジトリに含まれていますが、01_travel_spot フォルダ自体には .git フォルダがないため、デフォルト設定では Git リポジトリとして扱われません。

frontend-portfolio/

01_travel_spot/

フォルダのGit管理状態の確認方法

01_travel_spotディレクトリが本当にGitの管理下にあるかを確認したい場合は、以下の手順を試して確認できます。

frontend-portfolio で git status を実行
→ ブランチ名や変更ファイルが表示される

01_travel_spot に移動して git status を実行
→ 同じブランチ情報が表示される(Git は親の .git を自動で見つけるため)

ブランチ名 (On branch main) が表示され、現在の状態が表示されているため、そのディレクトリはGit管理下にあると判断できます。

つまり、ターミナル上では問題なく Git 管理下にありますが、VS Code の UI では認識しないことがあるということです。

Git の仕組み:.git フォルダについて

Git の管理情報は .git フォルダにあります。
このフォルダは通常、リポジトリのルート (今回のケースでは、frontend-portfolio) にしか存在しません。
サブディレクトリ (01_travel_spot) には .git はないため、VS Code は単独で開いた場合に Git と認識しないという仕様です。
VS CodeのUIが「今見ているフォルダはGitリポジトリのルートではない」と判断した結果、ブランチ情報の表示を省略しているということです。

まとめ

この記事では、ブランチ名がVS Codeに表示されない点を解説しました。
あくまでもデータ云々の話ではなく、UIの問題であるということを理解できたと思います。
少しでも参考になれば幸いです。

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

参考URL

https://stackoverflow.com/questions/40838765/detect-git-subfolder-in-visual-studio-code

https://github.com/microsoft/vscode/issues/121426

Discussion