😎

WSL2のgitで「Azure DevOps」に対してPATトークンなしでする方法

に公開

はじめに

https://zenn.dev/tazzae999jp/articles/07bed12c3ae6c0#patトークンの入力なしで、git-push可能にするため、windows側の認証機能を間借りする方法

に記載した「Git for Windows」のgit-credential-wincred.exeを間借りする方法で、
WSL2のgitもPATトークンの入力なしで使える話は、

リモートのリポジトリが「gitHub」だったときは、これでOK

リモートのリポジトリが「Azure DevOps」の場合では、これではうまくいかなかった

「Azure DevOps」は、Linux純正のgit-credential-managerを指定すると解決できた。

なぜかは不明です。Git for Windowsのそれを間借りする方法では、「Azure DevOps」ではうまくいかず、Linux純正のそれだと、うまくいく。 【 理由は知らん 】

Linux純正のgit-credential-managerは、aptパッケージマネージャでは、インストールできない

gitHubのサイトからおとしてきて、自分で配置する必要がある。

2025/06/24現在
https://github.com/git-ecosystem/git-credential-manager/releases

のサイトより

上の図のとおり、
gcm-linux_amd64.2.6.1.tar.gz
を右クリして、リンクのアドレスをコピーすると

https://github.com/git-ecosystem/git-credential-manager/releases/download/v2.6.1/gcm-linux_amd64.2.6.1.tar.gz

のURLの文字列が得られる

これより先は、業務用に貸与されたPCで作業した内容なので、
作業時のコンソールログは、貼り付けられない
( この記事は、個人PCで記載 )

見ながら、個人PCで記事書いてる。
一般的なノウハウの話なので問題ないでしょう。 ( 秘匿性のある機密情報ではないため )

cd /tmp
で、/tmpに移動し

先ほど、コピーしたURLを利用して

wget https://github.com/git-ecosystem/git-credential-manager/releases/download/v2.6.1/gcm-linux_amd64.2.6.1.tar.gz

をする
gcm-linux_amd64.2.6.1.tar.gz
がダウンロードされるため、解凍する。

tar -xvzf gcm-linux_amd64.2.6.1.tar.gz

するとログに、
NOTICE
git-credential-manager
libSkiaSharp.so
libHarfBuzzSharp.so
の4ファイルを解凍したと表示され、/tmp上にこれらのファイルが展開される

NOTICEはテキストファイルで、
cat NOTICE
で注意事項など表示される。(英語)

git-credential-manager
に実行権限を与える
libSkiaSharp.so
libHarfBuzzSharp.so
は、そのままでよい

chmod +x ./git-credential-manager

その後、
git-credential-manager
libSkiaSharp.so
libHarfBuzzSharp.so

/usr/local/bin
に移動する。

sudo mv ./git-credential-manager /usr/local/bin/git-credential-manager
sudo mv ./libSkiaSharp.so /usr/local/bin/libSkiaSharp.so
sudo mv ./libHarfBuzzSharp.so /usr/local/bin/libHarfBuzzSharp.so

そしたら、
WSL2のgitコマンドが利用するcredential.helper
を上記のLinux純正のgit-credential-manager
にする。

git config --global credential.helper /usr/local/bin/git-credential-manager

git config --global credential.helper
とだけ、打ち込んだときに、
/usr/local/bin/git-credential-manager

が返ってくれば、設定ができている

ls -l /usr/local/bin/git-credential-manager
を打ち込んで、gitコマンドを打ち込む作業ユーザで実行権限があることを確認しておこう
このあたりができてないと、うまくいかないと思いますよ

Azure DevOpsの場合は、下記をやる必要がある。【 理由は知らん 】

git config --global credential.https://dev.azure.com.useHttpPath true

git config --global credential.https://dev.azure.com.useHttpPath
とだけ打ち込んで
true
が返ってきたら、設定ができている

Azure DevOpsの場合は、下記をやる必要がある。(その2)【 理由は知らん 】

git config --global credential.credentialStore cache

git config --global credential.credentialStore
とだけ打ち込んで
cache
が返ってきたら、設定ができている

ここまで、設定したらPATトークンなしでも、
git cloneに成功した。
途中でブラウザ起動し、英語で、「このままブラウザ閉じたら続行できる」意味内容の
メッセージが出てくる
gitのコマンドはターミナル上で停止しているが、
そのブラウザのタブを閉じたら、
gitコマンド側が続きを継続するような流れになったりする。

おそらく、
git config --global credential.credentialStore cache
は、そこらへんがうまく動くようにするための設定ではないかと思う。が、詳細は知らん

なお、もし、
WSL2のCLIからのブラウザ起動がうまくできない問題があるため
この一旦、ブラウザを起動して閉じたら、gitのコマンドが継続する流れの動きが
うまく動かないときは。(結果として、gitコマンドが動作しない、現象があるときは)

https://zenn.dev/tazzae999jp/articles/0934afe501db0c#「wslu-%3A-wsl用のユーティリティコレクション」が無いとcliからwebブラウザの起動ができない

のやり方で
「wslu : WSL用のユーティリティコレクション」
をインストールすることで解決できるのではないかと思う。

以上

Discussion