2025/10/20 WSLでのクレデンシャルマネージャの設定方法を追記
回避策
クレデンシャルマネージャは下記のような場所にあるので、このディレクトリにパスを通す
(Git SDK for Windows でなくて Git for Windows をインストールした人は違うけど似たような場所にあるはず)
"C:\git-sdk-64\mingw64\bin\git-credential-manager.exe
やり方はいろいろあると思うが以下のようにプロファイルのところで対応した。
Powershell環境でもGitをたまに使うのでそちらのプロファイルも修正した。
- Bash (
~/.bash_profile)
# /mingw64/bin が PATH に含まれていない場合のみ追加
if [[ ":$PATH:" != *":/mingw64/bin:"* ]] && [[ -d /mingw64/bin ]]; then
export PATH="/mingw64/bin:$PATH"
fi
- Powershell (
$HOME\Documents\PowerShell\Microsoft.PowerShell_profile.ps1)
# 追加したいパスを配列で管理
$pathsToAdd = @(
"C:\git-sdk-64\mingw64\bin", # git のクレデンシャルマネージャがあるパス
"C:\git-sdk-64\usr\bin" # git 含む linux コマンドがあるパス
)
# PATH変数への追加処理
foreach ($p in $pathsToAdd) {
if ((";" + $env:PATH + ";") -notlike "*;$p;*") {
$env:PATH = "$p;$env:PATH"
}
}
ちなみに WSLでも Windows のクレデンシャルマネージャが使える
WSL側のターミナルにて以下を実行する。
なおWindows側のファイルは /mnt/c/... にてアクセスできる。
# まずは何か設定されている確認 $ git config --global credential.helper # 問題なければ下記にて設定 $ git config --global credential.helper "クレデンシャルマネージャのパス"
これだけだと、git push 実行時に下記のエラーがでてクレデンシャルマネージャが動作しない。
Failed to locate 'git.exe' executable on the path ...
そこで下記記事の「Configuring WSL without Git for Windows」に従って環境変数を設定したのち、WSLのターミナルを再度起動させる。
PowerToys の環境変数エディタを使うと楽。
- 変数名:
WSLENV - 値:
%WSLENV%:GIT_EXEC_PATH/wp
管理者権限でコマンドプロンプトを起動して SETX WSLENV %WSLENV%:GIT_EXEC_PATH/wp でもよい。
どうでもよいはなし
以前は Git bash インストール時に作られたショートカットから起動しておりクレデンシャルマネージャも起動していた。
そちらは git-bash.exe を実行させており MSYS2 のターミナルアプリで起動する。
パスが設定されていないのでは?とChatGPTがいうので環境変数PATHを比較すると以下のような違いがあった。
/mingw64/bin にクレデンシャルマネージャがあるのかと調べたらたしかにあった (C:\git-sdk-64\mingw64\bin\git-credential-manager.exe)。
ところで /opt/bin というのが Windows Terminal 環境だけに設定されている。
$ diff bash_git.txt bash_winterminal.txt -U 0 --- bash_git.txt +++ bash_winterminal.txt @@ -15 +15 @@ -/mingw64/bin: +/opt/bin:
調べると、以下のように msys2_shell.cmd 実行時に与える引数によってPATHの設定が変わるらしい。
- C:\msys64\msys2_shell.cmd -mingw64
環境変数 PATHに、/mingw64/bin が追加されます。
...- C:\msys64\msys2_shell.cmd -msys
環境変数 PATHに、/opt/bin が追加されます。
...基本的には -msys を使い、必要な場合にのみ /mingw64/bin にパスを通しておけばよいと思います(引数なしだと -msys になるようです)。
Git bash ショートカットは C:\git-sdk-64\git-bash.exe を起動し、Windows Terminal は C:\git-sdk-64\usr\bin\bash.exe を起動している。
それぞれの exe ファイルの内部で msys2_shell.cmd を呼び出しているのだろうか。
状況証拠ではあるが、こちら を見るとたしかに msys2_shell.cmd を呼び出していそうではある。
参考
👆️msys2_shell.cmd 実行時の引数によってPATH環境変数に追加されるパスが異なることを説明してくれているサイト
👆️Git bash環境を Windows terminal で使うための設定方法が書いてある