Visual Studio Code始终要求git凭据

时间:2015-12-21 16:30:26

标签: git visual-studio github visual-studio-code

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

我已安装在我的电脑GitHub DesktopGit中,我已经安装了:

 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

以下是要求提供凭据的弹出窗口:

enter image description here

我在弹出式窗口中输入了GitHub个凭据,但仍然在Visual Studio Code Git 输出窗口中出现此错误:

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

26 个答案:

答案 0 :(得分:112)

最后更新的回答@ 05年3月19日

在98票之后,我想我需要在解释中给出一个真实的答案。

为什么VS代码会问密码?因为VSCode运行自动提取功能,而git服务器没有任何信息来授权您的身份。它发生在:

  • 你的git repo有https个远程网址。是!这种遥控器每次都绝对会问你。这里也不例外!您可以使用临时技巧将授权缓存为下面的解决方案,但不建议这样做。
  • 你的git repo有ssl个远程网址,但是你没有将你的ssh公钥复制到git服务器上。使用ssh-keygen生成密钥并将其复制到git服务器。完成!此解决方案还可以帮助您再次在终端上重新键入密码。请参阅@Fnatical here提供的有关答案的良好指示。

本答案末尾的更新部分对您没有任何帮助。除了它会让你在工作流程中停滞不前。它只会阻止在VSCode中发生的事情,让这件事发生在终端。

很抱歉,如果这个错误的答案长期影响了你。

-

原始答案(不好)

我在VSCode document找到了解决方案:

  

提示:您应该set up a credential helper以避免被问到   每次VS代码与您的Git遥控器对话时获取凭据。如果你   不要这样做,你可能要考虑在...中禁用自动提取   菜单可减少您获得的提示数量。

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

在终端中,输入以下内容:

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)

更新

我安装了VS Code并在上面配置相同,但正如@ddieppa所说,它对我来说也不起作用。所以我试着在用户设置中找到一个选项,我看到“git.autofetch”= true,现在设置它是假的!不再需要VS Code重复输入密码!

在菜单中,单击文件/首选项/用户设置 并输入以下内容:

将您的设置放在此文件中以覆盖默认设置

{
  "git.autofetch": false
}

答案 1 :(得分:40)

您应该可以像这样设置您的凭据:

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

您可以像这样获取远程网址:

git config --get remote.origin.url

答案 2 :(得分:21)

这对我有用:
1.设置要存储的凭据存储设备
$ git config --global credential.helper store
2.然后确认是否要:
$ git config --global credential.helper store

使用Here中引用的git bash的简单示例(仅适用于当前存储库,所有存储库均使用--global

  

$ git config credential.helper store
  $ git push http://example.com/repo.git
  Username: < type your username >
  Password: < type your password >

     

[几天后]
  $ git push http://example.com/repo.git
  [您的凭据将自动使用]

同样适用于VS Code。

更详细的示例和高级用法here

注意:用户名和密码未加密并以纯文本格式存储,因此只能在个人计算机上使用。

答案 3 :(得分:19)

尝试安装&#34; Git Credential Manager For Windows&#34; (以及设置credential manager的说明)。

如果在使用Git的应用程序中需要(例如VS代码),它将&#34; magically&#34;打开Visual Studio Team Services凭据输入所需的对话框。

答案 4 :(得分:14)

我要做的就是运行以下命令:

git config --global credential.helper wincred

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

下次运行时,不会提示我输入密码。

答案 5 :(得分:11)

使用ssh而不是http / https。

您需要在本地计算机上设置ssh密钥,将其上传到您的git服务器并将网址格式http://替换为git://,您将不再需要使用密码。

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

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

文件是here

在github中使用ssh密钥

只需按照这些步骤操作即可立即设置ssh密钥:

  • 生成新的ssh密钥(如果已有密钥,则跳过此步骤)
    ssh-keygen -t rsa -C "your@email"

  • 将密钥设置在home/.ssh目录(或Windows下的Users/<your user>.ssh)后,打开它并复制内容

如何将sh键添加到github帐户?

  • 登录github帐户
  • 点击右上角的牧场主(设置)
    github account settigns
  • 点击SSH keys
    ssh key section
  • 点击Add ssh key
    Add ssh key
  • 粘贴您的密钥并保存

你们都准备出发了: - )

答案 6 :(得分:9)

自动Git身份验证。从v1.45 Release Notes

用于GitHub存储库的GitHub身份验证

VS Code现在具有针对GitHub的自动GitHub身份验证 仓库。现在,您可以在公共场所和 私有存储库,而无需在其中配置任何凭据管理器 你的系统。甚至在集成终端中调用的Git命令, 示例git push,现在会自动针对您进行身份验证 GitHub帐户。

您可以使用禁用GitHub身份验证 git.githubAuthentication设置。您也可以禁用终端 与git.terminalAuthentication的身份验证集成 设置。

答案 7 :(得分:6)

以下步骤将指导您完成以下操作:

  1. 生成SSH密钥(不含密码**)
  2. 将步骤1中生成的公钥添加到您的Git存储库
  3. 确认上述步骤已成功完成
  4. 进行首次提交(无需提供用户名/密码)
  5. **如果您的工作特别敏感,生成没有密码短语的SSH密钥是不明智的。

    操作系统 - Fedora 28 | 编辑 - VS Code v1.23.0 | 存储库 - Git

    生成SSH密钥:

    • ssh-keygen -t rsa -C "email@goeshere.com"
    • 输入要保存密钥的文件:按Enter
    • 输入密码:按Enter键
    • 再次输入相同的密码:按Enter

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

    将公钥复制并导入GitHub:

    • cat /home/bob/.ssh/id_rsa.pub

    • 将终端窗口中显示的整个公钥复制到剪贴板

    • 转到https://github.com并登录
    • 点击屏幕右上角的用户图标,然后选择设置
    • 单击 SSH和GPG密钥
    • 单击新SSH密钥
    • 输入标题,将复制的公钥粘贴到第一个项目符号中的剪贴板,然后单击添加SSH密钥

    确认以上步骤:

    • ssh -T git@github.com

    • yes

    • 嗨!您已成功通过身份验证,但GitHub不提供shell访问权限。

    首先提交/推送而无需输入用户名/密码:   - touch test.txt

    • git add test.txt

    • git commit - 打开编辑器,输入消息并保存文件。如果vi是您的编辑器,请在文件打开后按i,输入消息,按esc,然后输入:x以保存更改。

    • git push

    您可能遇到的唯一打嗝是当您尝试SSH到GitHub时。此链接将提供一些帮助 -

    快乐狩猎!

答案 8 :(得分:5)

通常,您可以使用内置的凭据存储功能:

git config --global credential.helper store

或者,如果您使用的是Windows,则可以使用其凭据系统:

git config --global credential.helper wincred

或者,如果您使用的是MacOS,则可以使用其凭据系统:

git config --global credential.helper osxkeychain

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

答案 9 :(得分:1)

关注article

你可以设置GIT_SSH env。变种。到Putty的plink.exe程序。 (然后使用pageant.exe作为身份验证代理)

答案 10 :(得分:1)

使用没有密码短语的SSH密钥。

对某些人来说,这可能是显而易见的(对我而言)。如果你绝对需要密码短语,它也无法解决问题,但这对我在Mac上的情况来说是一个不错的妥协。

答案 11 :(得分:1)

在与这样的事情进行了一段时间的战斗之后,我想我想出了一个很好的解决方案,特别是在GitHub和BitBucket都拥有多个账户时。但是对于VSCode,它最终从Git Bash终端开始,以便从bash会话继承环境变量,它知道要查看哪个ssh-agent。

我意识到这是一个老帖子,但我仍然很难找到一个地方来获取我需要的信息。自2017年起,ssh-agent只有在您尝试访问回购时才能提示您输入密码。

如果有人有兴趣,我会把我的发现放在here上:

答案 12 :(得分:1)

Ubuntu 用户只需在 vs code 的终端中输入此命令:

git config --global credential.helper store

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

注意:

  1. 用户名和密码未加密并以纯文本格式存储,因此请谨慎使用。

  2. 但是,如果您的密码包含一些特殊字符,如@、#、&、* 等,那么这些字符将被加密。

另外,你可以在家里找到你的“.git-credentials”文件,它是隐藏的,所以一定要启用隐藏文件。

位置:~/.git-credentials

答案 13 :(得分:1)

我通常运行此简单命令将git远程URL从 https 更改为 ssh

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

答案 14 :(得分:0)

相反但相关的问题:

就我而言,即使缓存助手超时已过期,我也一直在努力使用 vscode 集成终端,但不会忘记输入的密码。

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

发现 vscode 中恰好有一个选项可以让你在实际的 git 插件之上设置一个可选的缓存,这不允许发生预期的行为。

VScode preferences UI

检查后,我的密码在缓存超时时被遗忘,因此我可以毫不费力地开始从个人帐户跳转到工作帐户:)

在 Linux 上,vscode 1.58.2

答案 15 :(得分:0)

如果您使用的是 Windows PC 那么请回答您正在寻找的问题!
安装 Git for Windows

就是这样!

答案 16 :(得分:0)

这是我在计算机上解决此问题的方式:

  1. 打开Visual Studio代码
  2. 转到文件->首选项->设置
  3. 在“用户”标签下,展开“扩展”,然后选择Git

enter image description here

  1. 在右侧窗格中找到“自动提取”,然后取消选中它

enter image description here

答案 17 :(得分:0)

您可以参考此链接来设置Git Credential

您可以运行以下命令来保存您的git凭据。您无需在每次git命令运行时都输入用户名和密码。 (适用于 Windows

git config --global credential.helper wincred

对于 Mac / Linux ,单击此link,了解如何保存Git凭据

答案 18 :(得分:0)

对于Windows 10 按Windows键 键入cred,您应该在控制面板中看到“凭据管理器” 单击打开,然后删除相关的缓存凭据,然后重试,它会要求用户ID密码输入正确的密码,您会很好。

我更改网络密码时遇到了我

答案 19 :(得分:0)

我在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凭据弹出窗口,问题已解决。

答案 20 :(得分:0)

除了在上面添加ssh配置条目

如果是Windows

Set-Service ssh-agent -StartupType Automatic 

在Powershell中 现在vs代码不应该提示...

答案 21 :(得分:0)

对于Windows 10:转到控制面板/凭据管理器/ Windows凭据->单击git链接,->编辑->更新为新密码。那应该工作

答案 22 :(得分:0)

按照以下步骤解决问题。

卸载的软件Vscode和git并重新安装。 将git仓库克隆URL从ssh更改为https。

答案 23 :(得分:0)

我以简单的方式解决了类似的问题:

  1. 转到CMD或终端机
  2. 输入git pull origin master。将“ origin”替换为您的远程名称
  3. 它将要求提供凭据。键入。

仅此而已。我解决了问题

答案 24 :(得分:0)

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

  1. 卸载Git Desktop(不确定是否需要这样做)
  2. 卸载凭据管理器cd "C:\Program Files\Git\mingw64\libexec\git-core",然后卸载git-credential-manager.exe uninstall
  3. 重置凭据助手以使用Wincred git config --global credential.helper wincred
  4. 用户VS代码以推送一些更改并重新输入凭据。

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

答案 25 :(得分:0)

对我来说,我已经使用SSH密钥设置了远程存储库,但是git找不到它们,因为由于我公司的域策略,HOMEDRIVE环境变量已自动设置为网络共享。在启动code .之前在我的shell中更改该环境变量会导致VSCode继承正确的环境变量,并且git输出窗口中的中提琴不再出现连接错误。

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