我开始使用Visual Studio Code,我试图将我的测试项目保存到GitHub,但Visual Studio Code总是要求我的GitHub凭据。

我已经在我的PC上安装了GitHub Desktop和Git。我已经跑了:

 git config --global credential.helper wincred

但是Visual Studio Code仍然在要求凭证。

我该如何解决这个问题?

下面是我的.gitconfig文件,位于用户配置文件文件夹中:

    [filter "lfs"]
    clean = git-lfs clean %f
    smudge = git-lfs smudge %f
    required = true
[user]
    name = ddieppa
[user]
    email = fake@live.com
[credential]
    helper = wincred

下面是弹出窗口要求凭据:

我在弹出窗口中输入了我的GitHub凭证,但仍然在Visual Studio Code中的Git输出窗口中得到这个错误:

remote: Anonymous access to ddieppa/LineOfBizApp.git denied.
fatal: Authentication failed for 'https://github.com/ddieppa/LineOfBizApp.git/'

使用SSH代替HTTP或HTTPS。

您需要在您的本地机器上设置SSH密钥,将它们上传到您的Git服务器,并将URL从http://替换为Git://,您将不再需要使用密码。

如果你不能使用ssh添加到你的配置:

[credential "https://example.com"]
    username = me

文件在这里。


在GitHub中使用SSH密钥


简单地按照这些步骤,你将设置你的SSH密钥在任何时间:

生成一个新的SSH密钥(如果已经有密钥,则跳过此步骤) ssh -t rsa -C "your@email" 一旦你在家里设置好了钥匙。ssh目录(或Users/<您的用户>。ssh),打开并复制内容


如何向GitHub帐户添加SSH密钥?

登录GitHub账户 点击右上角的牧场主(设置) GitHub账户设置http://git-scm.com/docs/gitcredentials 单击SSH密钥 单击Add ssh键 粘贴密钥并保存

你都准备好了:-)


为什么Visual Studio Code需要密码?因为Visual Studio Code运行自动获取功能,而Git服务器没有任何信息来授权您的身份。它发生在:

Your Git repository has a https remote URL. Yes! This kind of remote will absolutely ask you every time. No exceptions here! (You can do a temporary trick to cache the authorization as the solution below, but this is not recommended.) Your Git repository has ssh remote URL, but you've not copied your ssh public key onto the Git server. Use ssh-keygen to generate your key and copy it to Git server. Done! This solution also helps you never retype password on terminal again. See a good instruction by @Fnatical here for the answer.

这个答案后面更新的部分对你一点帮助都没有。(这实际上会让你的工作流程停滞不前。)它只是停止在Visual Studio Code中发生的事情,并将这些发生的事情移动到终端。

如果这个糟糕的答案影响了你很长很长一段时间,我很抱歉。


原来的答案(不好)

我在Visual Studio Code文档中找到了解决方案:

提示:您应该设置一个凭据助手,以避免被询问 每次VS Code与你的Git遥控器对话时,你都需要获取凭据。如果你 不要这样做,你可能想要考虑在… 菜单来减少提示的数量。

因此,打开凭据帮助程序,以便Git将密码保存在内存中一段时间。默认情况下,Git会缓存密码15分钟。

在Terminal中输入如下内容:

git config --global credential.helper cache
# Set Git to use the credential memory cache

输入如下命令修改默认密码缓存超时时间。

git config --global credential.helper 'cache --timeout=3600'
# Set the cache to timeout after 1 hour (setting is in seconds)

如果原来的答案不成立

我安装了Visual Studio Code和上面相同的配置,但正如@ddieppa所说,它也不适合我。所以我试着在用户设置中找到一个选项,我看到了“git”。Autofetch " =真,现在设置为假!Visual Studio代码不再需要重复输入密码!

在菜单文件→首选项→用户设置: 类型:

将您的设置放在这个文件中以覆盖默认设置:

{
  "git.autofetch": false
}

尝试安装“Git凭证管理器For Windows”(并按照说明设置凭证管理器)。

当在应用程序中使用Git(例如Visual Studio Code)时,它将“神奇地”打开所需的对话框,用于Visual Studio Team Services凭据输入。


下面这篇文章:

您可以将GIT_SSH环境变量设置为PuTTY的plink.exe程序。

(然后使用pageant.exe程序作为身份验证代理。)


使用不带密码短语的SSH密钥。

也许这对一些人来说是显而易见的(对我来说不是)。如果你绝对需要密码,这也不能解决问题,但在我使用Mac的情况下,这是一个不错的妥协。


你应该能够像这样设置你的凭证:

git remote set-url origin https://<USERNAME>:<PASSWORD>@bitbucket.org/path/to/repo.git

你可以像这样获取远程URL:

git config --get remote.origin.url

在与这样的事情斗争了一段时间后,我想我想出了一个很好的解决方案,尤其是在GitHub和Bitbucket上有多个账户的时候。然而,对于Visual Studio Code,它最终从Git Bash终端启动,这样它从Bash会话继承了环境变量,并且它知道要查看哪个ssh-agent。

我仍然很难找到一个地方来获取我需要的信息。另外,自2017年以来,ssh-agent只有在您尝试访问存储库时才会提示您输入密码短语。

我把我的发现写在这里,如果有人感兴趣的话。


下面的步骤教你如何:

生成SSH密钥(不含密码短语**) 将第1步中生成的公钥添加到Git存储库中 确认以上步骤已成功完成 第一次提交(无需提供用户名/密码)

**如果您的工作特别敏感,生成没有密码短语的SSH密钥是不明智的。

OS - Fedora 28 |编辑器- Visual Studio Code v1.23.0 | Repository - Git

生成SSH密钥:

ssh -t rsa -C "email@goeshere.com" 输入保存密钥的文件:按“Enter” Enter passphrase:按“Enter” 再次输入相同的密码短语:Press Enter

完成上述步骤后,您的公钥的位置将显示在终端窗口中。如果当前登录的用户是'bob',那么公钥的位置将是/home/bob/.ssh/id_rsa.pub

复制并导入公钥到GitHub:

猫/home/bob/.ssh/id_rsa.pub 将现在显示在终端窗口中的整个公钥复制到剪贴板 登录https://github.com并登录 单击界面右上角的用户图标,选择“设置” 单击“SSH”和“GPG”键 单击“新建SSH密钥” 输入标题,将复制到剪贴板的公钥粘贴在第一个项目符号中,单击“添加SSH密钥”

确认以上步骤:

ssh -T git@github.com 是的 嗨!您已成功验证,但GitHub不提供shell访问。

第一次提交/推送无需输入用户名/密码:

触摸用法 Git添加test.txt Git提交-打开编辑器,输入消息并保存文件。如果你的编辑器是vi,打开文件后按I,输入消息,按Esc,然后输入:x保存修改。 git推

您可能遇到的唯一问题是当您尝试SSH到GitHub时。这个链接将提供一些帮助-

错误:代理程序承认签名失败

寻找快乐!


我所要做的就是运行这个命令:

窗口: Git配置——全局凭据。辅助wincred

Linux: Git配置——全局凭据。辅助存储

然后我被提示输入两次密码。

下一次它成功了,没有提示我输入密码。


这对我来说很管用:

设置凭证帮助存储: Git配置——全局凭据。辅助存储 然后验证你是否想: Git配置——全局凭据。辅助存储

这里引用了一个使用Git Bash的简单示例(仅适用于当前存储库,对所有存储库使用——global):

git config credential.helper store
git push http://example.com/repo.git

Username: < type your username >
Password: < type your password >

[several days later]

git push http://example.com/repo.git

[your credentials are used automatically]

它也适用于Visual Studio Code。

这里有一个更详细的示例和高级用法。

注意:用户名和密码不加密,以纯文本格式存储,因此仅在您的个人计算机上使用。


对于我来说,我已经用SSH密钥设置了远程存储库,但是Git无法找到它们,因为HOMEDRIVE环境变量由于公司的域策略被自动设置为网络共享。在启动代码之前更改shell中的环境变量。导致Visual Studio Code继承正确的环境变量和voilà在Git输出窗口中不再有连接错误。

现在我只需要弄清楚如何覆盖域策略,因此HOMEDRIVE总是指向我的本地c:\users\marvhen目录,这是.ssh目录的默认位置。


我设法通过执行以下步骤来阻止这种情况。

卸载GitHub Desktop(我不确定这是必要的) 卸载凭证管理器:cd“C:\Program Files\Git\mingw64\libexec\ Git -core”,然后执行Git - Credentials - Manager .exe卸载 重置凭证帮助使用wincred: git config——global credential。辅助wincred 使用Visual Studio Code来推动一些更改并重新输入凭证。

注意:我使用个人访问令牌作为密码。


我用简单的方法解决了一个类似的问题:

进入CMD或终端 输入git拉origin master。将“origin”替换为远程名称 它会要求提供证书。类型。

这是所有。我解决了这个问题。


请按照以下步骤进行处理。

卸载Visual Studio Code和Git软件,然后重新安装。将Git存储库克隆URL从SSH更改为HTTPS。


Windows 10操作系统:进入控制面板→凭证管理器→Windows凭证→点击Git链接→编辑→更新新密码。这应该有用。


除了添加上面的SSH配置项之外

如果窗户

Set-Service ssh-agent -StartupType Automatic

在PowerShell。

现在Visual Studio代码应该不会提示…


我在Visual Studio Code中遇到了类似的问题。

我通过将远程URL更改为https(在文件.git/config中)解决了这个问题:

[remote "origin"]
    url = https://user@server.com/plesk-git/project.git

还有:

git config --global credential.helper wincred

我又拉了一次,弹出了Windows凭据,问题解决了。


一般来说,您可以使用内置的凭据存储设施:

Git配置——全局凭据。辅助存储

或者,如果你在Windows上,你可以使用他们的证书系统:

Git配置——全局凭据。辅助wincred

或者,如果你在macOS上,你可以使用他们的凭据系统:

Git配置——全局凭据。辅助osxkeychain

第一种解决方案在大多数情况下是最优的。


Windows 10:

按窗口键。 输入信用,你应该看到“凭证管理器”在控制面板 单击此处打开并删除相关的缓存凭据。然后再试一次。它将询问用户ID和密码。输入正确的密码就可以了。

当我修改我的网络密码时,就发生了这种情况。


我通常运行这个简单的命令来将Git远程URL从HTTPS更改为SSH:

git remote set-url origin git@github.com:username/repo-name-here.git

自动Git认证。v1.45版本说明:

GitHub authentication for GitHub Repositories VS Code now has automatic GitHub authentication against GitHub repositories. You can now clone, pull, push to and from public and private repositories without configuring any credential manager in your system. Even Git commands invoked in the Integrated Terminal, for example git push, are now automatically authenticated against your GitHub account. You can disable GitHub authentication with the git.githubAuthentication setting. You can also disable the terminal authentication integration with the git.terminalAuthentication setting.


您可以参考此链接来设置Git凭据。

您可以运行以下命令来保存Git凭据。你不需要每次运行Git命令时都输入用户名和密码(适用于Windows):

git config --global credential.helper wincred

对于Mac / Linux,如何保存Git凭据,请参见Mac和Linux的Git凭据管理器。


下面是我在电脑上解决这个问题的方法:

开放Visual Studio代码 进入菜单文件→首选项→设置 在User选项卡下,展开Extensions并选择Git 在右侧窗格中找到Autofetch并取消选中它


如果你是在Windows电脑上,那么安装Git for Windows。就是这样!


Ubuntu用户只需在Visual Studio Code终端输入以下命令:

git config --global credential.helper store

现在,输入一次你的用户名和密码,之后它就不会再问你了。

注意:

用户名和密码不加密,以纯文本形式存储,请谨慎使用。 但是,如果您的密码包含一些特殊字符,如@,#,&,*等,那么这些字符将被加密。

此外,你可以找到你的'。Git-credentials文件在家里。它是隐藏的,所以一定要启用隐藏文件。

地点:~ / .git-credentials


相反的问题,但相关的:

在我的情况下,我努力与Visual Studio Code集成终端不忘记输入的密码,即使缓存助手超时已经过期。

不过,外部终端会话工作正常。

我发现在Visual Studio Code中有一个选项,它允许你在实际的Git插件上设置一个可选的缓存,这并不允许预期的行为发生。

一旦检查,我的密码在缓存超时时就被忘记了,所以我可以毫不费力地从个人账户跳到工作账户:)

Linux和Visual Studio Code 1.58.2。


我在Visual Studio Code和Ubuntu 20.04 (Focal Fossa)上运行:

它自动解决了定期询问凭证的问题:

git config --global credential.helper store

打开Visual Studio Code的用户必须与执行Git命令的用户相同。然后在终端中执行如下命令。

git config --global credential.helper store
git pull

在下一个操作push或pull中,您将不会看到它请求Git凭据。


(这个答案不是特定于GitHub,而是我使用BitBucket,但它也可以在GitHub中工作,因为概念是相同的)

就我而言,我使用的是Bitbucket应用程序密码,它总是要求我进行身份验证。

停止自动读取并不能解决问题,因为我一天要拉和推好几次,每次输入应用程序密码都很糟糕。

此外,我需要将应用程序密码存储在不安全的地方,这也是我不想使用凭证的原因。助手存储,它以明文存储密码,而不是使用凭据。助手wincred,它是加密的。

当对话框提示我使用浏览器而不是应用程序密码时,我要求使用浏览器登录,这是可行的,原因超出了我的理解。现在它不再要求凭据了(我不得不暂时改变我的默认浏览器,因为我工作时使用的bitbucket帐户不在我的默认浏览器中,对话框尝试使用默认浏览器进行身份验证)。


这对我很有用。你只需要输入一次PAT。 Git配置——全局凭据。辅助wincred


我们需要配置VS Code以在Git命令之上提供身份验证。

下面我将展示如何设置扩展设置。