web-dev-qa-db-ja.com

WSL(Windows上のUbuntu)でGit資格情報ストアを使用するには?

私はこれらの指示に従ってみました: https://stackoverflow.com/a/40312117/21728 これは基本的にこれを行います:

Sudo apt-get install libsecret-1-0 libsecret-1-dev
cd /usr/share/doc/git/contrib/credential/libsecret
Sudo make
git config --global credential.helper /usr/share/doc/git/contrib/credential/libsecret/git-credential-libsecret

しかし、ネットワーク操作を行うと、次のエラーが表示されます。

** (process:7902): CRITICAL **: could not connect to Secret Service: Cannot autolaunch D-Bus without X11 $DISPLAY

確かにX11ディスプレイはないので、それは理にかなっています。

Windows(WSL)上のUbuntuでGit資格情報キャッシュを機能させる方法は?

33
Borek Bernard

Git for Windowsをインストールした場合は、システムにWindows統合資格情報マネージャーがインストールされています。

here にあるように、WSLからWindows実行可能ファイルを実行できます。

それを使用するには、次のコマンドを実行できます(Windows用のgitがC:\ Tools\Gitにインストールされていると仮定)。

git config --global credential.helper "/mnt/c/Tools/Git/mingw64/libexec/git-core/git-credential-manager.exe"
36
Carlos Beppler

TL; DR

これを行うスクリプト を作成しました。 Chefオーケストレーションで使用します。

Git-credential-manager.exeを見つけるかインストールします

  1. cmd.exeを開き、where git-credential-manager.exe を呼び出します
    • パスを返す場合、素晴らしい。パスの変換に進みます。
    • そうでない場合...
  2. cmd.exewhere git.exe を呼び出します
    • パスが返されない場合、次のステップは、Credential Managerのみをインストールすることです
    • パスを返す場合、次のようになります。
    • C:\Program Files\Git\cmd\git.exe
    • 次の最後のスラッシュの後にすべてをドロップして、次のように変更します。
    • C:\Program Files\Git\mingw64\libexec\git-core\git-credential-manager.exe
    • それが存在する場合、素晴らしい。パスの変換に進みます。
    • さもないと...
  3. Credential ManagerMicrosoftのgit repo からインストールし、whereを再度使用してパスを取得します。

パスをDOSからLinuxに変換します

必要がある:

  1. C:\/mnt/c/に置き換えます
  2. スラッシュを\から/に反転します
  3. 二重バックスラッシュ\\を使用してエスケープスペース(および存在する場合は括弧)

そう...

  • "C:\Program Files\Git\mingw64\libexec\git-core\git-credential-manager.exe"は...
  • "/mnt/c/Program\\ Files/Git/mingw64/libexec/git-core/git-credential-manager.exe"

Gitを構成する

  1. bashgit config --global credential.helper "<converted/path>"を呼び出します
24
Bruno Bronosky

Windows 10と「WSL」を使用して、〜/ .gitconfigファイルを作成しましたが、[credential]セクションのラベルを[credentials]と間違えて入力していました。 git credential fillを実行して、その出力をgit credential approveに渡そうとしましたが、うまくいったかもしれませんが、「usage:git credential [fill | approve | reject]」と言ったのではないかと思います。最後に、私は単に走った:

$ git config --global credential.helper cache

そしてgit pullをしました;ユーザーとパスワードの入力を求められたら、いつものように入力しました。その後、それを思い出しました。 〜/ .gitconfigに(正しい名前の)セクションが追加されていることがわかりました。

[credential]
        helper = cache

私はそれを編集して、はるかに長いタイムアウトを提供しました:

[credential]
        helper = cache --timeout=144000

そして、それはすべてうまく機能しているようです。

16
selkieTG