如何修复Git for Windows一直要求Github凭据



我总是通过HTTPS克隆私有Github repos。我有个人访问令牌用作"密码"。当git第一次请求时。

在很长一段时间里,当我在命令行中运行东西时,我可以在不需要git请求凭证的情况下进行git操作。

但是现在它总是在命令行中请求凭据!

我已经尝试了各种组合来更改git config凭据。helper(改为store/wincred/manager/cache)和一堆其他东西,没有工作

有趣的是,如果我在VSCode终端运行git命令,那么它不会要求凭证,只是工作。但是我不想每次我需要做一些git的事情时都启动VSCode(特别是当我的计算机由于其他任务而内存不足时)

我需要一个永久的方法来解决这个问题,同时仍然使用HTTPS远程url +个人访问令牌

我使用的是Git版本2.40.0.windows.1

在尝试了许多在线指南后,我现在的.gitconfig很可怕

[credential "github.com"]
authority = Github
interactive = never
preserve = true
[credential]
helper = manager
modalPrompt = true
writelog = true

我终于找到了根本原因

显然是因为PATH中没有git-credential-manager.exe

一旦我做set PATH=C:Gitmingw64bin;%PATH%和做一个git push,我提示web浏览器Github登录,然后事情只是现在工作

在Windows上使用manager-core并指定提供程序。对于github,我们需要github提供程序,Bitbucket有一个Bitbucket提供程序,并且有一个通用的用于正常使用。

所以要设置为generic作为默认值,并使用github的github提供程序,具体使用:

git config --global credential.helper manager-core
git config --global credential.provider generic
git config --global credential.github.com.provider github

如果您使用的是Atlassian Bitbucket本地服务器,请使用generic。'bitbucket'提供程序是为了他们的云服务。

使用Git 2.39+, GCM(来自微软的Git凭证管理器)不再是"manager-core",正如我在这里解释的。

我只使用git config --global credential.helper manager任何远程服务器(GitHub, GitLab, Bitbucket本地服务器)

只是确保看到你的GitHub令牌(PAT)当做:

printf "host=github.comnprotocol=https" | git credential-manager get

printf命令甚至可以在一个简单的Windows CMD(不需要bash)中工作,前提是您的%PATH%包括:

set "GH=%ProgramFiles%Git"
set "PATH=%GH%bin;%GH%cmd;%GH%usrbin;%GH%mingw64bin;%GH%mingw64libexecgit-core;%PATH%"

不仅允许使用printf(%GH%usrbin),还允许使用git-credential-manager(-core).exe(%GH%mingw64bin)。

最新更新