Windows の Sourcetree に Git サービスの Bitbucket や GitHub のアカウントを連携後、
WSL のファイルを Sourcetree と VS Code の双方で Git 管理できる様にするメモです。
Sourcetree で WSL 上のファイルを管理対象に
WSL 上のファイルを Sourcetree で Git 管理対象にしようとすると以下のエラー画面が表示されました。
'git log' がコード 128 で終了しました: fatal: detected dubious ownership in repository at '//wsl.localhost/Ubuntu/home/[user-name]/projects/[project-name]'
To add an exception for this directory, call:
git config --global --add safe.directory '%(prefix)///wsl.localhost/Ubuntu/home/[user-name]/projects/[project-name]'
(\\wsl.localhost\Ubuntu\home\[user-name]\projects\[project-name])
※ [user-name]
以降は作業者のディレクトリ構成のとおり。
Sourcetree でターミナルを起動 (Shift + Alt + T) して素直に記載のコマンドを実行します。
$ git config --global --add safe.directory '%(prefix)///wsl.localhost/Ubuntu/home/[user-name]/projects/[project-name]'
# 設定の確認
$ cat ~/.gitconfig
...
[safe]
bareRepository = explicit
directory = %(prefix)///wsl.localhost/Ubuntu/home/[user-name]/projects/[project-name]
これで Sourcetree で対象のディレクトリを Git 管理できるようになりました。
(手抜きに親ディレクトリ projects
を対象にした場合、エラーは消えませんでした)
VS Code に設定を引き継ぐ
VS Code でコミットしようとするとユーザー情報が未設定のエラーが表示されます。
Make sure you configure your "user.name" and "user.email" in git.
ただ、Sourcetree では問題なくコミットできます。
どうも Sourcetree は C:\Users\[user-name]
配下、VS Code は ///wsl.localhost/Ubuntu/home/[user-name]
配下の .gitconfig
を参照するようで、設定ファイルが異なるようです。
この辺、Sourcetree で自動生成された設定に任せたい・共通化したいので、
VS Code のターミナルで Sourcetree と同じ .gitconfig を参照するように以下のコマンドを実行します。
$ git config --global --add include.path "/mnt/c/Users/[user-name]/.gitconfig"
# 設定の確認
$ cat ~/.gitconfig
[include]
path = /mnt/c/Users/[user-name]/.gitconfig
WSL 上から C ドライブのファイルを参照させる場合、
C:/Users/[user-name]/.gitconfig
ではなく mnt/c
でマウントしたファイルを参照させる必要があるみたいです。
これで VS Code と Sourcetree で共通の設定を利用できるようになりました。