概要
- Windows11でWSL2上で開発する際、VScodeはWin11側で起動している。
- このとき、WSL2側でgit initやgit cloneしたgitリポジトリをWin11側で起動したVScodeで開いてもVScodeのgit機能で管理できなかった。
- powershellでgit logすると「リポジトリの所有権が疑わしい」とのこと。
- メッセージに従い、git configでsafe.directoryに当該パスを追加し、解決した。
前提
- OS: Windows 11 Pro(バージョン:21H2/OSビルド22000.856)
- 仮想マシンOS: CentOS Stream release 8
- 仮想マシン動作環境: WSL2
- 前提ソフトウェア: VScode, Windows Terminal
背景
- WSL2のお陰でWindowsマシンのみでも手軽にLinux環境向けの開発もできるようになった。
- また、開発物はgitで管理したい。
- さらに、上記環境でVScodeで開発したい場合、WSL2上のファイル、リポジトリをWin側のVScodeで操作、編集することになる。
- WSL2上の所有権と、Win上での所有権の扱いの違いにより今回の問題が起きたと考えている。
現象
- WSL2上のCentOSで作成したgitリポジトリをWin側のVScodeで操作しようとした。
- Win側のVScodeは.bashrcなどでパスを通しておくことにより、WSL2のターミナルで
code .
とするだけで現在地を開ける。 - しかし、開いたVScodeでのソース管理をひらくと、WSL2側で作ったはずのgitリポジトリを認識していない。
- これだと、Win側のVScodeでソース管理機能が使えないので困る。
解決方法
- VScodeのエクスプローラーでファイルを選択し、「エクスプローラーで表示する」でエクスプローラーをひらく。
- 開いたエクスプローラーで右クリックし、ターミナルで開く。
- 開いたターミナルで
git log
を実行すると以下のエラーが出る。
fatal: detected dubious ownership in repository at '<当該のパス>'
git config --global --add safe.directory '%(prefix)/<当該のパス>'
おまけ
- 少し、参考サイトも読みました。
- safe.directoryを削除したい場合は空値を追加
- %(prefix)はホーム ディレクトリからの相対パスの意味
おまけのおまけ
- 設定は設定されたディレクトリにのみ適用され、再帰的に配下のディレクトリに適用されることはない
- 楽できないかと、/tmpをsafe.directoryに設定したら、/tmp/sandbox1もtmp/sandbox2も許可されるかと思ったがそんなことは無かったぜ!
おわり
- WSL2とVScodeとgitがあると幸せに開発が楽しめています。
- Enjoy WSL2!