我已尝试按照以下说明操作: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凭据缓存工作?
答案 0 :(得分:30)
如果您安装了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"
答案 1 :(得分:16)
我已经创建了a script that does this for you。我在厨师编排中使用它。
cmd.exe
并致电where git-credential-manager.exe
cmd.exe
中致电where git.exe
C:\Program Files\Git\cmd\git.exe
C:\Program Files\Git\mingw64\libexec\git-core\git-credential-manager.exe
where
获取路径。我们需要:
C:\
替换为/mnt/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"
bash
中致电git config --global credential.helper "<converted/path>"
答案 2 :(得分:13)
使用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
现在这一切似乎都运转良好。
答案 3 :(得分:4)
到目前为止,所有答案都过于复杂。而且 git 文档并没有真正的帮助,他们喜欢参考资料很多,所以你需要按照 2-3 个链接来获取你需要的信息!
git.exe
与 WSL 一起使用!使用 linux git sudo apt install git-all
(我认为它预装在 Ubuntu 中)。git 默认支持 2 种方法。要查看您安装了哪些方法,请执行以下命令:
git help -a | grep credential
我的结果是:
credential Retrieve and store user credentials
credential-cache Helper to temporarily store passwords in memory
credential-store Helper to store credentials on disk
@selkieTG 在他们的回答中涵盖了这一点,包括完整性......
git config --global credential.helper "cache --timeout 30000"
会将您的密码/令牌缓存 30,000 秒(8 小时 20 分钟)
git config --global credential.helper "store"
将在 ~/.git-credentials
中存储纯文本密码/令牌。
纯文本?!!对于 WSL,我完全可以在这里使用纯文本。我输入凭据以运行我的 Windows 计算机,然后输入凭据以登录 WSL2。我需要隐藏这些吗?不是真的,它在我的开发箱上更方便。
如果您真的想使用 manager-core
,您可以将它安装在您的 Ubuntu version 中。然后使用它。
答案 4 :(得分:2)
alias git=git.exe
将简单地使用Windows中的git.exe及其配置
答案 5 :(得分:0)
我最近更新到WSL2,在我的情况下,以下操作无效:
"/mnt/c/Program\\ Files/Git/mingw64/libexec/git-core/git-credential-manager.exe"
起作用的是以下内容:
git config --global credential.helper "/c/Program\\ Files/Git/mingw64/libexec/git-core/git-credential-manager.exe"
直到我从出现“未找到”错误的路径中删除了/mnt/
。
根据我的调查,在干净启动Windows之后,在WSL2中安装Windows驱动器存在问题,更多详细信息,请参见:
https://github.com/microsoft/WSL/issues/4122
这是我的情况中最可能的原因。
另一个原因可能是/etc/wsl.conf
中的根目录配置错误
答案 6 :(得分:0)
无法在带有 Debian 的 WSL2 上与 git-credential-manager.exe
一起使用。我总是会得到 remote: Repository not found.
,没有进一步的错误。
相反,我对 git-credential-manager-core.exe
做了同样的事情,所以我的配置现在是 credential.helper=/mnt/c/Program\ Files/Git/mingw64/libexec/git-core/git-credential-manager-core.exe
。这立即奏效,事先在 Windows 上设置了 GitHub 2FA/PAT。
我有以下 git 版本: