如何在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显示。

如何使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

  1. 打开cmd.exe并致电where git-credential-manager.exe
    • 如果它返回一条路,很棒。继续转换路径。
    • 如果不是...
  2. cmd.exe中调用where git.exe
    • 如果它不返回路径,下一步是单独安装凭据管理器
    • 如果它确实返回路径,它将是:
    • C:Program FilesGitcmdgit.exe
    • 让我们放下最后一刻之后的所有东西,然后像这样更改它:
    • C:Program FilesGitmingw64libexecgit-coregit-credential-manager.exe
    • 如果存在,很棒。继续转换路径。
    • 否则...
  3. install 凭证管理器来自Microsoft的Git Repo,然后再次使用where获取路径。

将路径从DOS转换为Linux

我们需要:

  1. /mnt/c/
  2. 替换C:
  3. 将Slashes从翻转为/
  4. 逃脱空间(有括号(如果有的话)),带有双重斜线\

所以...

  • "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

  1. 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个链接以获取所需的信息!

  1. 您不需要与WSL一起使用Windows git.exe!使用Linux git sudo apt install git-all(我认为它与ubuntu预装)。
  2. 然后,您可以简单地在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键。)

只需按照以下步骤:

  1. 通过在 Windows命令提示 PowerShell 中运行以下内容,在Windows上配置凭据管理器:

     git config --global credential.helper wincred
    
  2. 将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),您可以按照以下步骤操作:

  1. 通过运行以下命令来配置Windows Git凭据助手:
git config --global credential.helper "/mnt/c/Program Files/Git/mingw64/bin/git-credential-manager.exe"
  1. 确保使用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

相关内容

  • 没有找到相关文章

最新更新