我已经尝试按照以下说明进行了尝试: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显示。
如何使git凭据缓存在Windows(WSL)上的Ubuntu上工作?
如果您为Windows安装了Git安装在系统上。
您可以在此处找到的WSL运行Windows的可执行文件。
要使用它,您可以运行以下命令(假设Windows的git已安装在C: Program Files git上,并且是版本< v2.36.1)
git config --global credential.helper "/mnt/c/Program Files/Git/mingw64/bin/git-credential-manager.exe"
有关最新路径,请参见Microsoft教程:https://learn.microsoft.com/en-us/windows/wsl/wsl/tutorials/wsl-git
tl; dr
我已经创建了一个为您完成此操作的脚本。我与厨师编排一起使用。
找到或安装git-credential-manager.exe
- 打开
cmd.exe
并致电where git-credential-manager.exe
- 如果它返回一条路,很棒。继续转换路径。
- 如果不是...
- 在
cmd.exe
中调用where git.exe
- 如果它不返回路径,下一步是单独安装凭据管理器
- 如果它确实返回路径,它将是:
-
C:Program FilesGitcmdgit.exe
- 让我们放下最后一刻之后的所有东西,然后像这样更改它:
-
C:Program FilesGitmingw64libexecgit-coregit-credential-manager.exe
- 如果存在,很棒。继续转换路径。
- 否则...
- install 凭证管理器来自Microsoft的Git Repo,然后再次使用
where
获取路径。
将路径从DOS转换为Linux
我们需要:
- 用
/mnt/c/
替换 - 将Slashes从
翻转为
/
- 逃脱空间(有括号(如果有的话)),带有双重斜线
\
C:
所以...
-
"C:Program FilesGitmingw64libexecgit-coregit-credential-manager.exe"
变成... -
"/mnt/c/Program\ Files/Git/mingw64/libexec/git-core/git-credential-manager.exe"
我上面的脚本具有仅做此操作的功能
dos_path_to_linux(){
sed -e 's?\?/?g' -e' s?[cC]:?/mnt/c?' <<<"$1"
}
但是,正如 @12345ieee此后发表评论的那样,WSL Build 17046已添加了wslpath
实用程序。值得一试,但是我目前无法访问Windows进行验证。(请注意,即使在我的链接中的发行说明中给出了用法语句,但该命令目前似乎不包括用法语句,-h等)
配置git
- 在
bash
中致电git config --global credential.helper "<converted/path>"
使用Windows 10和" WSL",我创建了一个〜/.gitConfig文件,但已将[凭据]部分标签误认为是[凭据]。我尝试运行GIT凭据填充,然后将其输出输入到GIT凭据批准中,但我怀疑它没有说"用法:GIT凭证[fill | and |批准|拒绝]"。最后,我只是跑了:
$ git config --global credential.helper cache
然后进行了git;当提示用户和密码时,我像往常一样键入它们。之后,它记得了。我发现它已将(正确命名)的部分添加到我的〜/.gitConfig:
[credential]
helper = cache
我对此进行了编辑以提供更长的超时:
[credential]
helper = cache --timeout=144000
现在似乎一切正常。
alias git=git.exe
将简单地使用Windows及其配置的git.exe
所有答案都过于复杂。git文档并没有真正的帮助,他们喜欢经常引用材料,因此您需要遵循2-3个链接以获取所需的信息!
- 您不需要与WSL一起使用Windows
git.exe
!使用Linux gitsudo apt install git-all
(我认为它与ubuntu预装)。 - 然后,您可以简单地在https://git-scm.com/book/en/v2/git-tools-credential-storage中遵循说明。
摘要
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
如何使用缓存&amp;商店:
缓存
@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版本中。然后使用它。
它已经在vscode-docs上进行了记录:
在Windows和WSL之间共享GIT凭据
如果您使用HTTP来克隆存储库,并且具有在Windows 中配置的凭证助手,则可以与WSL共享,以便您输入的密码在双方都持续存在。(请注意,这不适用于使用SSH键。)
只需按照以下步骤:
通过在 Windows命令提示或 PowerShell 中运行以下内容,在Windows上配置凭据管理器:
git config --global credential.helper wincred
将WSL配置为使用相同的凭证助手,但是在 WSL终端中运行以下内容(假设您有
git
&GT; =v2.39.0
):git config --global credential.helper "/mnt/c/Program Files/Git/mingw64/bin/git-credential-manager.exe"
要了解
git
的先前版本的路径,请参阅https://learn.microsoft.com/en-us/windows/wsl/tutorials/wsl-git
您在Windows端使用Git时输入的任何密码现在都可以使用WSL,反之亦然。
来源:https://github.com/microsoft/vscode-docs/blob/vnext/docs/remote/troubleshooting.md#sharing-git-git-credentials-betentials-beteent-windows-andwindows-and-windows-and-wsl--------wsl-/p>
我最近刚刚更新为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
中的根目录的错误配置,请考虑Microsoft GCM v2.1.1(2023年5月),因为它包括:
- WS内部更好的浏览器检测(#1148,解决问题878:for
wslview
:如果DISPLAY
变量未设置,则禁用浏览器身份验证 - WSL中的GCM安装路径上的更好文档(#1168)
此处描述了安装:
首先安装Windows的最新git。
在WSL安装中,运行以下命令将GCM设置为GIT凭证助手:
git config --global credential.helper "/mnt/c/Program Files/Git/mingw64/bin/git-credential-manager.exe"
注意:git-credential-manager.exe的位置可能有所不同。
现在是git-credential-manager.exe
,不再是git-credential-manager-core.exe
(自2022年12月Git 2.39.0 和GCM v2.0.877(2022年11月),PR 551)。
,正如我在此处描述的,对于每个存储库的凭据:
git config --global credential.UseHttpPath true
如Loligans在评论中指出的有关该可执行文件的位置:
如果您不知道git可执行位置在哪里并且可以在命令行上执行git,则可以使用以下命令:
git --exec-path
,它将为您提供git可执行位置。
这应该有助于缩小您的搜索
(尽管我在2017年有不同的意见)
(我在此处提到--exec-path
)
下载:( gcmcore-linux_amd64.2.0.567.567.18224.deb)凭证经理/版本/tag/v2.0.567
安装:
sudo apt install gcmcore -y or
sudo dpkg -i <path-to-package.deb> (gcmcore-linux_amd64.2.0.567.18224.deb)
配置:
export DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1
git-credential-manager-core configure
在WSL Ubuntu上安装Git
sudo apt install git
设置电子邮件和用户名
git config --global user.email "YOUR_EMAIL"
git config --global user.name "YOUR_USERNAME"
安装GIT凭据管理器
wget "https://github.com/GitCredentialManager/git-credential-manager/releases/download/v2.0.886/gcm-linux_amd64.2.0.886.deb" -O /tmp/gcmcore.deb
sudo dpkg -i /tmp/gcmcore.deb
git-credential-manager configure
设置凭据管理器以从缓存读取
git config --global credential.credentialStore cache
使用wsl上的git凭据存储(Windows上的ubuntu),您可以按照以下步骤操作:
- 通过运行以下命令来配置Windows Git凭据助手:
git config --global credential.helper "/mnt/c/Program Files/Git/mingw64/bin/git-credential-manager.exe"
- 确保使用HTTPPATH来防止错误消息"致命:无法确定此'dev.azure.com'远程URL的组织名称。您可以通过运行以下命令来执行此操作:
git config --global credential.useHttpPath true
通过遵循以下步骤,您应该能够成功地使用WSL(Ubuntu)上的GIT凭据存储。
我只是把我的.gitconfig
来自C:/Users/[Myself]/.gitconfig
(Windows)到Debian (WSL)中的Git配置文件,位于~/.gitconfig
。
您也可以将git config --global --edit
用作命令。
you 可以 对文件进行一些花哨的链接,但我要做的只是简单简便地复制Windows系统中的内容。
两者最终都应该看起来至少喜欢以下内容:
[user]
name = YourName
email = YourGitHubDetailStuffsIfYouUseGitHub@users.noreply.github.com
无法与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
。这立即起作用,手动之前在窗户上设置了github 2fa/pat。
我有以下git版本:
- Windows:
GIT版本2.31.0.Windows.1
Windows v1.20.0.0
的GIT凭据管理器 - debian/wsl2
GIT版本2.30.2