问题描述
我试过按照这些说明操作: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
-
打开
cmd.exe
并调用where git-credential-manager.exe
-
如果它返回一个路径,那就太好了。继续转换路径。
-
如果不…
-
-
在
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
-
如果存在,那就太棒了。继续转换路径。
-
除此以外…
-
-
从Microsoft’s git repo安装Credential Manager,然后再次使用
where
获取路径。
将路径从DOS转换为Linux
我们要:
-
用
/mnt/c/
替换C:\
-
将
\
的斜杠翻转为/
-
具有双反斜杠的转义空间(如果有的话,还有括号)
\\
所以…
-
"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
-
在
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
现在这一切似乎都运转良好。