如何将GitHub个人访问令牌添加到Visual Studio Code

90
我收到一封电子邮件,说GitHub将在2021年8月13日后要求令牌身份验证。 我想确保在此日期之后不会有服务中断(推送/拉取)。
所以我登录GitHub并创建了一个令牌用于我的单个存储库。
现在我想使用该令牌从Visual Studio Code中的Git和命令行(我已在Mac上安装)推送/拉取我的存储库。
我该如何添加/替换来自GitHub的密码与我刚刚创建的生成的令牌以从我的存储库推送/拉取? 我可以从Visual Studio Code中完成它吗?还是必须通过终端命令行添加?
11个回答

133

按照以下简单步骤,使用个人访问令牌设置GitHub身份验证:

  1. 在您的PC上打开命令行窗口或Mac上的终端

  2. 将当前目录设置为项目根目录

cd C:\Users\Giddy\source\repo\MySampleProject
运行命令以通过令牌设置远程访问。
git remote set-url origin https://username:token@github.com/username/repository.git

例子:

git remote set-url origin https://sampleuser:a7b19929***58fe65d1c@github.com/sampleuser/sampleproject.git

4
在强制启用仓库的两步验证后,这使得GitLab身份验证对我起作用了。 - Ben Whitmore
2
git远程设置URL源https://username:token@github.com/username/repository.git,以便排除“git push”无法正常工作。+1 - irahorecka
5
我这样做了,看起来它能够工作,但这也意味着令牌以明文形式存储在git配置文件中。这肯定不是一个好主意,对吗? - Alexey Uvarov
它(令牌)将直接发送到URL请求中,这也不是很酷。 - almaceleste
1
同样可以在Ubuntu上的VSCode中工作。 - Arul

54

在 Visual Studio Code (Mac) 上进行测试

不需要额外的扩展程序。我只信任官方扩展,抱歉。 GitHub 由 KnisterPeter 开发的扩展程序

  1. 从 github.com 生成个人访问令牌
  2. 确保保存您的访问令牌(例如ghp_pVC*****)
  3. 使用 Visual Studio Code 打开您的项目或在终端中导航到您的项目,cd ~/path/to/your/project
  4. 在 Visual Studio Code 终端中,git remote set-url origin https://<personal_access_token>@github.com/<your_username or organization_name>/<repo_name>.git
  5. 现在您可以尝试 git push

注意:

生成个人访问令牌时,请确保启用工作流程:

Enter image description here

提示

您可以键入git remote -v以查看您的起源或上游。

origin  https://github.com/<username>/<repo_name>.git (fetch)
origin  https://github.com/<username>/<repo_name>.git (push)
upstream        https://github.com/<username>/<repo_name>.git (fetch)
upstream        https://github.com/<username>/<repo_name>.git (push)

在设置完git remote set-url origin https://<personal_access_token>@github.com/<your_username>/<repo_name>.git之后,您的git remote -v应该是这样的:

origin  https://<your_personal_access_token>@github.com/<username>/<repo_name>.git (fetch)
origin  https://<your_personal_access_token>@github.com/<username>/<repo_name>.git (push)

很棒的回答 @sultanmyrza,谢谢! 在第3步之前,您必须确保您在保存要提交的文件的目录中(根据需要使用cd命令)。 - Jose Rondon
@JoseRondon 注意,已更新。 - sultanmyrza
这应该是被接受的答案。谢谢! - Sun Bee
太好了,谢谢。 - Hamza Sharaf
还在要求我输入密码。虽然是在Ubuntu上运行,但这应该没有任何区别,它还是无法工作。 - user1550189
1
通过我们的gitlab仓库,我终于成功让它工作了,这里有一个经过处理的示例:git remote set-url origin https://<pat>@code.ini.uzh.ch/CoACH/CoACH-labs.git。其中<pat>是个人访问令牌。请注意,这里没有用户名(PAT就是用户名)。还要注意,它指定了https连接,但使用了.git形式的连接。 - undefined

16
如果你收到这样的消息,使用KnisterPeter 的 GitHub 扩展

为启用 Visual Studio Code GitHub 支持,请设置个人访问令牌。

启用 Visual Studio Code GitHub 支持

  1. 前往 设置开发者设置个人访问令牌

    或直接访问 https://github.com/settings/tokens

  2. 点击生成新令牌

    设置 -> 生成新令牌

  3. 返回 Visual Studio Code 并打开命令面板Ctrl + Shift + P

  4. 输入 GitHub:设置个人访问令牌

    设置个人访问令牌

  5. 粘贴新生成的令牌的值


15
搜索"Github:设置个人访问令牌"时出现“无匹配命令”的提示。 - Amar Ilindra
3
如果您已经安装了Github扩展程序,但仍然看不到它,请前往[此处](https://marketplace.visualstudio.com/items?itemName=KnisterPeter.vscode-github)并安装。如果问题仍未解决,则建议在该扩展程序的问题报告中提出问题。@AmarIlindra - KyleMit
3
@KyleMit 这不是官方扩展。 - mr.loop
@mr.loop,当然可以,但这是一个常见的问题,可能会吸引人们来到这个问答页面,因为它具有相同的调试错误信息。 - KyleMit
6
不相信第三方保管我的访问令牌,这是不好的表现。 - Bus42
1
这个扩展已被弃用,推荐使用Github Pull Requests and Issues。正如KnisterPeter所指出的那样。 - Rob Von Nesselrode

3
如果您使用HTTPS URL作为远程仓库的地址,那么您可以缓存您的凭据:今天,这将是您的GitHub用户名和密码,明天,密码将是您的token。
检查您的git config credential.helper结果。 如果它是manager或manager-core,请使用git credential-manager-core erase删除旧密码。
(这是一条“破坏性命令”,因为它将删除github.com条目及其关联值——密码)
git credential-manager-core get读取该旧值)
printf "protocol=https\nhost=github.com\nusername=<yourGitHubAccountName>"|git credential-manager-core erase

然后使用命令 git credential-manager-core store 存储令牌:
printf "protocol=https\nhost=github.com\nusername=<yourGitHubAccountName>\npassword=<newToken>"|git credential-manager-core store

如果凭据助手是 manager 而非 manager-core,则将 credential-manager-core 替换为 credential-manager

Visual Studio Code 将使用该凭据助手,并将新的“密码”(令牌)存储到远程站点。


如果在Linux上出现以下情况:
git: 'credential-manager-core' is not a git command. See 'git --help'. 

你需要下载并安装GCM

1
我运行了你的命令,我看到了“osxkeychain”。 - user1186050
2
对于Mac,您可以将credential-manager-core替换为credential-osxkeychain(https://dev59.com/XWgu5IYBdhLWcg3wzKAc#28007050),或者您可以通过图形方式完成:https://docs.github.com/en/github/using-git/updating-credentials-from-the-macos-keychaina - VonC
1
我运行了 git config credential.helper,但什么也没有得到。 - Ben Whitmore
1
@BenWhitmore 你的意思是在URL中明文放置密码或令牌吗?这是一个坏主意,基于一个错误的答案。 - VonC
1
请在回答中提到第一个命令是否具有破坏性(erase)? - Peter Mortensen
显示剩余8条评论

3
如果您没有被提示输入用户名和密码,则可能是因为您的凭据已经被缓存到了计算机上。您可以在钥匙串中更新凭据,将旧密码替换为令牌。
从macOS钥匙串更新凭据:Updating credentials from the macOS Keychain

这正是我的问题。关闭VS代码,删除所有的GitHub登录凭据,然后重新启动VS Code将问题解决了。我只需重新登录以打开设置同步,而VS Code会处理其他所有事项。 - S.Chauhan

3

我在使用GitHub密码验证时,遇到了Visual Studio Code的“你不能再使用密码验证GitHub”的问题。

我使用的是Mac电脑,所以默认安装了Git(v2.21)。

我尝试了以下步骤,现在可以通过Visual Studio Code无误地检入代码(请注意,此方法使用Microsoft Git凭据管理器核心 - 请参见此处):

  1. 使用Homebrew更新Git,命令为brew install git。它将在您的系统上创建一个新的符号链接,指向/usr/local/bin/git,因此不会使用Mac默认的Git。
  2. 按照GitHub的说明设置个人访问令牌。
  3. 进入Mac的钥匙串并删除vscode.github.com密码凭据。
  4. 安装Microsoft的Git凭据管理器核心(GCMC) - GitHub上的说明
  5. 退出并重新启动Visual Studio Code,然后再次推送代码。您将被提示在浏览器中授权GCMC。一旦完成,从Visual Studio Code推送代码应该自动工作,因为GCMC将处理Git授权。

3

复制以下行并粘贴到您的Visual Studio Code终端中

git remote set-url origin https://<TOKEN>@github.com/<USERNAME>/<REPOSITORYNAME>.git

将TOKEN替换为您的令牌,USERNAME替换为用户名,REPOSITORYNAME替换为您的存储库。这应该可以工作。 您的最终行应该类似于:
git remote set-url origin https://asdlkuresdflj23433423lj234@github.com/brother/sampleapp.git

在我的VSCode 1.62.2上肯定有效,但是那个令牌存储在哪里?希望不是以明文形式存储的。 - Karl
@Karl,没错,在.git/config文件中。 - SamB

3
  1. 在Visual Studio Code中,尝试从远程存储库推送或拉取
  2. 点击Visual Studio Code底部的“登录GitHub”消息
  3. 在提示框中点击“允许”
  4. 在Visual Studio Code顶部出现的提示框中输入令牌

要查看与GitHub身份验证相关的输出:

  1. 在Visual Studio Code中打开终端
  2. 在终端面板顶部点击“输出”
  3. 从下拉菜单中选择“GitHub身份验证”

目前我使用的是Visual Studio Code v1.56.0版本。


3
第一步后流程有所变化,但总体类似(VSCode v1. 56.1,Windows)。当认证提示要求“密码”而实际上需要令牌时感到困惑(我最初输入了我的GitHub密码)。 - grunet
2
我没有收到任何提示。 - Capagris
8
当我尝试执行 'git push' 命令时,我从未看到过 'Signing into GitHub' 的提示信息,只会出现 'remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token remote: Please see https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/ for more information. fatal: unable to access 'https://github.com/ivanpartizan/algorithms.git/': The requested URL returned error: 403'。 我已经创建了自己的个人访问令牌,请问如何使用它? - ivan milenkovic
@ivanmilenkovic 请参考:https://dev59.com/r1EG5IYBdhLWcg3wbNMC#66830126,这对我解决了问题。 - Reed

2
以下内容对我有帮助(我是Ubuntu 22.04用户): git config --local -e 编辑您的数据 ==>:

[core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
[remote "origin"]
        url = https://YourGitlabName:YourToken@gitlab.com/YorRepo
        fetch = +refs/heads/*:refs/remotes/origin/*
[branch "main"]
        remote = origin
        merge = refs/heads/main
[user]
        name = YourGitlabName
        email = YourGitlabE-mail

这并没有真正回答问题。如果您有不同的问题,可以通过点击提问来提出。如果您想在此问题获得新的答案时得到通知,您可以关注此问题。一旦您拥有足够的声望,您还可以添加悬赏以吸引更多关注。- 来自审核 - user12256545
完美运作!只需将Gitlab信息替换为您的GitHub信息即可。 - Arnav

0

我曾经遇到同样的问题,最终成功地出现了“登录 GitHub”提示并完成了身份验证。基本上,在浏览器窗口中单击“授权 Visual Studio Code”后,您需要执行以下确认页面:

Success!

Authorization was successful. You will be redirected back to Visual Studio Code

Didn't work? If you aren't redirected, you can add the token manually.

        **Your authorization token:**

vscode://vscode.github-authentication/did-authenticate?windowid=1&code=[Not-A+Real+Token)SJ###AASDf

......... etc


切换回VS Code (可能已经自动聚焦),然后选择'不再提示'或者其他类似的消息...然后你就可以看到并点击'登录GitHub...'的提示了

希望这能帮助到某些人...因为尽管听起来很简单,但是当关闭提示或选择“显示Git日志”选项时,VS Code并不会提示。


1
请解释一下“最终成功出现了‘登录GitHub’提示”。显然,您在这方面遇到了困难,应该详细说明。 - Justin Solms
我的问题与原帖作者完全相同。 - Jesse
1
你是如何让“登录GitHub”提示出现的?这是答案的结论还是你首先实现的?如果是后者,你是怎么做到的?请通过编辑(更改)你的答案回复,不要在评论中回复(不要包括“编辑:”,“更新:”或类似信息——答案应看起来像是今天编写的)。 - Peter Mortensen
@PeterMortensen,我今天刚看到这个答案。最佳实践从诚实地添加“更新:”注释以避免欺骗并与来自评论建议的更改保持良好连续性转变为什么时候? - Eric Hepperle - CodeSlayer2010
@Eric Hepperle - CodeSlayer2010:当存在公共修订历史记录时,就不存在任何欺骗。例如,请参见此MSO问题此MSO问题 - Peter Mortensen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接