当前位置: 首页>>技术教程>>正文


如何在WSL上使用Git凭证存储(Windows上的Ubuntu)?

, ,

问题描述

我试过按照这些说明操作: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凭据缓存工作?

最佳解决思路

如果您安装了Git for Windows,则系统上会安装Windows集成凭据管理器。

您可以从WSL运行Windows可执行文件,找到here

要使用它,您可以运行以下命令(假设您的git for Windows安装在C:\ Tools \ Git上)

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

次佳解决思路

长话短说

我创建了a script that does this for you。我和我的Chef编排一起使用它。

找到或安装git-credential-manager.exe

  1. 打开cmd.exe并调用where git-credential-manager.exe

    • 如果它返回一个路径,那就太好了。继续转换路径。

    • 如果不…

  2. cmd.exe中调用where git.exe

    • 如果它没有返回路径,则下一步是单独安装Credential Manager

    • 如果它确实返回一个路径,它将是这样的:

    • C:\Program Files\Git\cmd\git.exe

    • 让我们删除最后一个斜杠旁边的所有内容,然后改变它:

    • C:\Program Files\Git\mingw64\libexec\git-core\git-credential-manager.exe

    • 如果存在,那就太棒了。继续转换路径。

    • 除此以外…

  3. Microsoft’s git repo安装Credential Manager,然后再次使用where获取路径。

将路径从DOS转换为Linux

我们要:

  1. /mnt/c/替换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. bash中调用git config --global credential.helper "<converted/path>"

第三种解决思路

使用Windows 10和”WSL”,我创建了一个〜/.gitconfig文件,但错误地将[credential]部分标签输入为[凭证]。我尝试运行git凭证填充,然后将其输出提供给git凭证批准,这可能有效,但我怀疑不是因为它说“usage:git credential [fill | approve | reject]”。最后,我简单地跑了:

$ git config --global credential.helper cache

然后做了一个git pull;当提示输入用户和密码时,我像往常一样输入它们。在那之后,它记住了它。我发现它已将(正确命名的)部分添加到我的〜/.gitconfig中:

[credential]
        helper = cache

我编辑它以提供更长的超时:

[credential]
        helper = cache --timeout=144000

现在这一切似乎都运转良好。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/7039.html,未经允许,请勿转载。