2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

WSLで作成したgitリポジトリをWin側で開くと生じる所有権問題の解決

Posted at

概要

  • 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リポジトリを認識していない。
    2022-08-14_0006.png
  • これだと、Win側のVScodeでソース管理機能が使えないので困る。

解決方法

  • VScodeのエクスプローラーでファイルを選択し、「エクスプローラーで表示する」でエクスプローラーをひらく。
  • 開いたエクスプローラーで右クリックし、ターミナルで開く。
  • 開いたターミナルでgit logを実行すると以下のエラーが出る。
fatal: detected dubious ownership in repository at '<当該のパス>'
  • 具体的には以下の通り。
    2022-08-14_0007.png
  • 指示通り、git configでsafe.directoryに当該パスを追加。
 git config --global --add safe.directory '%(prefix)/<当該のパス>'
  • VScodeを一度閉じ、WSL2側から開きなおすと無事に操作できるようになった
    2022-08-14_0005.png

おまけ

おまけのおまけ

  • 設定は設定されたディレクトリにのみ適用され、再帰的に配下のディレクトリに適用されることはない
  • 楽できないかと、/tmpをsafe.directoryに設定したら、/tmp/sandbox1もtmp/sandbox2も許可されるかと思ったがそんなことは無かったぜ!

おわり

  • WSL2とVScodeとgitがあると幸せに開発が楽しめています。
  • Enjoy WSL2!
2
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?