LEFログ:学習記録ノート

leflog: 学習の記録をどんどんアップしていきます

【Git】WSL2でwarning: credential.helper has multiple valuesが表示されてエラーが出たときの対処法

結論

git config --global credential.helper "/mnt/c/Program\ Files/Git/mingw64/bin/git-credential-manager-core.exe"

このコマンドでエラーが出る場合

--addを付けて、

git config --global credential.helper "/mnt/c/Program\ Files/Git/mingw64/bin/git-credential-manager-core.exe"  --add

あるいは、--replace-allを付けて、

git config --global credential.helper "/mnt/c/Program\ Files/Git/mingw64/bin/git-credential-manager-core.exe"  --replace-all

どちらかのコマンドを実行すると、問題なく設定できる。

概要

GitのHTTPS認証に個人アクセストークンを求めるのは間違っているだろうか (Git Credential Manager のすゝめ)

この記事を参考にして、WSL2によるHTTPS接続の設定をしていたのですが、どうもうまくいかずに困っていました。

ヒットしたのはこの記事のみでした。

git - Github doesn't cache my password - Stack Overflow

この記事によれば、

git config --global --edit
git config -l --show-origin

のコマンドを叩くと現在の設定を確認できるよ、とだけ書いてあります。

しかし、それ以上の情報はよくわからず、困ってしまいました。

という訳で、エラー文を読み返してみました。

$ git config --global credential.helper "/mnt/c/Program\ Files/Git/mingw64/bin/git-credential-manager-core.exe"

warning: credential.helper has multiple values
error: cannot overwrite multiple values with a single value
       Use a regexp, --add or --replace-all to change credential.helper.

改めて読み直してみたところ、日本語にするとこうなります。

「警告:このコマンドを実行すると、認証のヘルパーが複数の値を持ってしまいます。エラー:複数の値を一つの値の上に上書きすることはできません。正規表現を使うか、--add か --replace-all を使えば認証のヘルパーを変更できるよ」

というわけで、コマンドの最後に--addを付けてもう一度やってみたら……無事に解決しました。

--addでコマンドを実行後にgit config -l --show-originを改めて実行したところ、

file:/home/lef237/.gitconfig    credential.helper=/mnt/c/Program\ Files/Git/mingw64/bin/git-credential-manager-core.exe

など、複数の行が追加されていました。どうやらGitにおける設定がたくさん追加されたようでした。

これで、Windows側のcredential-managerを参照することができるようになるはずです。

すごく単純なことでしたが、Google検索でも情報が出てこなかったので少し焦りました。落ち着いてエラー文を読んで、その意味をきちんと理解することが大事だと改めて分かりました。

同じエラーが出た方は、是非参考にしてみてください!