背景
WSL2を利用することでWindwosでもLinux環境での開発を実現することができるようになった。しかし、WSL2でHTTPSプロトコルを使用してgitのリポジトリにプッシュしようとすると毎回、ユーザー名とパスワードの入力を求められる。この問題を回避するためにWSL2とGit for Windowsに付属しているgit-credential-managerを連携させる。WSL2とgit-credential-managerを連携することでgitリポジトリにpushをしても毎回ユーザー名とパスワードの入力を求められなくなる。
Git for Windowsのインストール(Windows上)
もし、まだGit for Windowsをインストールしていなければ以下のサイトからダウンロードしてインストールを行う
https://git-scm.com/download/win
WSL2上のgit-credientialとGit for Windowsのgit-credential-managerを連携(Linux上)
エディタでgit-credential-managerを開く
sudo vi /usr/bin/git-credential-manager
git-credential-managerに以下の内容を追記して保存する
(2024/2/6 追記)
Git for Windowsの実行ファイル名がgit-credential-manager.exeからgit-credential-wincred.exeにファイル名が変更されたため、実行ファイル名を次のように記載する。(※1)
#!/bin/sh
exec /mnt/c/Program\ Files/Git/mingw64/libexec/git-core/git-credential-wincred.exe $@
git-credential-managerの実行権限を付与する
sudo chmod +x /usr/bin/git-credential-manager
~/.gitconfigを開き、認証に関する設定(認証時に利用する認証マネージャーの設定)を追記する
[credential]
helper = manager
以上の設定で連携が完了する。これで初回のプッシュ時に認証情報を入力すると、以降同じリポジトリにプッシュしても認証情報は求められない。
参考ページ
https://blog.anaisbetts.org/using-github-credentials-in-wsl2/
https://stackoverflow.com/questions/72472443/git-credential-manager-not-found-on-wsl2
(※1)
git-credential-wincred.exeのパスを実行してうまく動作しない場合は、おそらく古いバージョンのGit for Windowsを使用していると思われるのでgit-credential-managerを指定する。もしくは新規にGit for Windowsを再インストールして、git-credential-wincredをパスに指定する。
#!/bin/sh
exec /mnt/c/Program\ Files/Git/mingw64/libexec/git-core/git-credential-manager.exe $@