Yin*_*gqi 8 ubuntu github visual-studio-code windows-subsystem-for-linux
我想将vscode连接到两个github账号,因为我有一个个人账号和一个公司账号,并且希望在不同的工作时能够推送到不同的账号(个人项目提交到个人帐户,业务提交到业务帐户)项目。
如果我无法登录两个不同的帐户,我可以以某种方式注销前一个帐户并登录另一个帐户吗?还是我必须使用另一台计算机?顺便说一句,我不确定这是否重要,但我使用的是 Windows、WSL Ubuntu。
谢谢!
JΛY*_*ÐΞV 42
\n
主要修订日期列表
\n\xc2\xa0 \xc2\xa0 \xc2\xa0\n编辑 1:2021-06-06 \n\xc2\xa0 \xc2\xa0 \xc2\xa0 \xe2\x80\xa2 \xc2\xa0 \xc2\xa0 \xc2\xa0\ n编辑 2:2021-07-15 \n\xc2\xa0 \xc2\xa0 \xc2\xa0 \xe2\x80\xa2 \xc2\xa0 \xc2\xa0 \xc2\xa0\n编辑 3:2022/05/21
这个问题已被编辑多次,以保持其实用性和最新性。最近一次编辑于世界标准时间 2022 年 9 月 14 日上午 10 点左右。为了保持这个答案的相关性和最新性,有必要进行 3 次重大编辑(或者修订可能是在这里使用更合适的术语)。这些修订是由于 UI 的更改以及 GitHub 自己定义的用于定义登录过程的协议的更改而引发的(我特别指的是 GitHub 现在需要使用PAT安全令牌来验证使用该HTTPS协议推送的任何内容)。最重要的是要注意的是 ,这是一个有效的答案。2022/09/14
第一个问题可以很快得到回答,而问题#2 则需要更多解释,并且包含您可能正在寻找的答案。
\n答案#1
\n(问) VS Code 的 UI 中是否内置了一个快速简单的机制,用于在 GitHub 帐户之间切换?
\n(A) 是的!VS Code 的“活动栏”上有一个图标,可用于登录和注销 GitHub 和 Microsoft 帐户。我将在下面详细介绍这一点。
\n您应该有几个扩展来帮助自动化登录过程,现在需要 PAT(即使在 CmdL 中)。这也有助于组织您用于每个项目的 user.name 和 user.email 。以下是您需要的 2 个扩展。
\n在 VS Code 中打开的链接: vscode:extension/GitHub.vscode-pull-request-github
\n安装原因 4 -这是每个使用 GitHub 的人都应该使用的 GitHub 扩展,但它也有助于终端集成,使 UI 和 CLI 能够共存。最后一句几乎是逐字逐句地描述了扩展。更简洁地说,安装它将有助于自动化 GitHub 的登录过程。安装后,它可能会提示您登录 GitHub。如果是这种情况,那么“是”登录
\n_“Git-Autoconfig 会自动为您克隆和/或创建的每个新项目设置凭据。当您打开项目时,它还会提示您确保项目配置了正确的 user.name 和 user.email。使用时两个 GitHub 帐户,针对每个项目所属的帐户进行专门配置非常重要。如果一个项目不小心配置为错误的项目,就会发生不好的事情,并且会浪费大量时间。
\n需要配置此扩展。该扩展尝试自动配置每个项目,但如果您觉得项目未配置或配置不正确,您可以按 键F1打开“快速输入菜单”。打开菜单后,输入“git autoconfig set”。当您看到“设置配置”选项时,选择它,然后按照两部分说明进行操作。
\n当“Git-AutoConfig”提示您时,如果您的用户范围"settings.json"文件中配置了以下设置,那么您可以选择预先配置的输入,而不是每次都手动键入输入。
/**\n * @file "settings.json"\n * @desc "This is what my configuration looks like" */\n\n "git-autoconfig.configList": [\n {\n "user.email": "W3Dojo@gmail.com",\n "user.name": "jD3V"\n },\n {\n "user.email": "AndrewJay.zck@gmail.com",\n "user.name": "JAYD3V"\n }\n ]\nRun Code Online (Sandbox Code Playgroud)\n 我们将从欢迎页面继续前进,因为在为错误的 GitHub 帐户配置的项目中可能会搞砸一些事情。仅供参考,您需要确保从一个项目跳转到下一个项目时登录到正确的帐户。当您登录到另一个帐户时,您不想为一个帐户输入项目。它确实会让 VS Code 感到困惑,更会让 VS Code 扩展感到困惑。哦,还有 Git,VS Code 使用该软件来完成所有这些工作。
\n听起来我可能很挑剔,但我希望这对你有用,任何涉及 Git 的事情都可能很容易搞砸。
\n下图显示了用于注销的选项。如果您没有登录任何 GitHub 帐户,那也没关系。继续吧。
\n现在,使用您要用于登录的帐户的正确值执行以下命令。
\n~$ git config --global user.name "urGitHubUsrName"\n~$ git config --global user.email "urGitHubEmail@foobar.com"\n\n~$ git config --local user.name "urGitHubUsrName"\n~$ git config --local user.email "urGitHubEmail@foobar.com"\nRun Code Online (Sandbox Code Playgroud)\n 现在,我让您使用与 GitHub Pull-request & issues 扩展同步的设置有两个原因。
\n如果您为每个帐户使用不同的 GitHub 帐户,您将自动从另一个帐户注销。换句话说,如果您使用帐户 A 登录 GH 扩展程序,而您已经登录与帐户 B 同步的设置,则帐户 B 将被注销。这还不是全部,它会造成混乱,请相信我,当我说你想在项目工作时避免混乱时。
\n每个 GitHub 帐户都有自己同步的设置。这包括设置、按键绑定、片段等...这样,如果您有一个用于工作,一个用于个人,您就可以管理不同的设置。通常公司 GitHub 帐户将由公司中的其他人使用,这意味着您必须使用某些设置。此方法将防止您必须更改您的个人配置。
\n要登录其他帐户,只需重复步骤即可。第一次执行时可能看起来很慢,但我现在登录和退出实际上大约需要 10 秒。来自诺卡尔的欢呼!
\n小智 7
也曾为此苦苦挣扎,但找到了一个简单、自然的解决方案。\n已使用 VSCode 1.61.1 和 1.61.2 (Windows 11) 以及 WSL2 (Alpine) 进行测试
\n~/.ssh/configHost *github*\n HostName github.com\n User git\nHost perso-github.com\n IdentityFile ~/.ssh/id_rsa_perso\nHost pro-github.com\n IdentityFile ~/.ssh/id_rsa_pro\nRun Code Online (Sandbox Code Playgroud)\n~/.ssh/id_rsa_perso.pub~/.ssh/id_rsa_pro.pub(或者事后编辑它们.git/config以确保它们的远程“来源”url 与文件中定义的别名匹配~/.ssh/config)
Host *github*\n HostName github.com\n User git\nHost perso-github.com\n IdentityFile ~/.ssh/id_rsa_perso\nHost pro-github.com\n IdentityFile ~/.ssh/id_rsa_pro\nRun Code Online (Sandbox Code Playgroud)\n\xe2\x9e\x9c repositories # git config --global --unset user.name\n\xe2\x9e\x9c repositories # git config --global --unset user.email\nRun Code Online (Sandbox Code Playgroud)\n\n\n注意:可能没有必要,因为 git --local设置应该覆盖--global设置
\n
(Git-Autoconfig 将来可能会有所帮助)
\n\xe2\x9e\x9c ~ # cd repositories\n\xe2\x9e\x9c repositories # git clone perso-github.com:git_perso_account/some_fun_repo.git \n\xe2\x9e\x9c repositories # git clone pro-github.com:git_pro_account/boring_business_repo.git \nRun Code Online (Sandbox Code Playgroud)\n您现在可以从命令行和 VSCode GUI 管理您的存储库!
\n自 2023 年 6 月 27 日起,使用最新版本的 Git-Credential-Manager(又名 GCM)版本 ( ),可以在 Visual Studio 和 Visual Studio Code 中同时让两个用户处于活动状态2.2.0。自 2019 年发布以来,Git 已集成到 VS 和 VSCode 中,并使用 GCM 进行更新来处理 GitHub 等需要增加凭据的网站。
根据文档:
多用户
如果您在单个 Git 托管服务上使用多个不同的身份,您可能想知道 Git Credential Manager (GCM) 是否支持此工作流程。答案是肯定的,但由于它与 Git 的互操作方式而有点复杂。
截至撰写本文时,版本2.2.0处于预发布状态,因此请记住这一点。该版本可在此处获取。您需要自己安装它,但一旦安装,它应该会自动与 VS/VS Code 一起使用。每当您执行pull/ push/ fetch(等)并且您的存储库的来源不包含用户名时,您都会看到一条提示,询问您希望使用哪个帐户进行身份验证。您可以从之前存储的任何凭据中进行选择,也可以为其他帐户添加新凭据。
其他工具,尤其是 Windows 版的 Git,可能需要更多的技巧,但这超出了本文的范围。
有关如何实现的更多文档,包括可用的新命令行选项,请查看添加此功能的拉取请求
想法:使用 SSH 密钥在您的 PC 上工作的文件夹中配置 git,以验证您的拉取或推送。因此,您需要为每台 PC 的每个 Github 帐户创建 SSH 密钥。
假设您有 2 个 Github 帐户:
假设您可以交替使用 Ubuntu 和 Windows 进行工作。然后您需要创建 4 个密钥,如下所示:
第 1 步:创建 SSH 密钥
适用于 Windows(使用 powershell 或 gitbash 或 vscode 终端)和 ubuntu
ssh-keygen -t rsa -C "your_email"
Run Code Online (Sandbox Code Playgroud)
步骤1.1:当你面临这个问题时:
Enter file in which to save the key (/c/Users/your_username/.ssh/id_rsa):
Run Code Online (Sandbox Code Playgroud)
输入可识别的名称和完整路径。例如:
/c/Users/your_username/.ssh/id_rsa_yourname_work_github
Run Code Online (Sandbox Code Playgroud)
您可以通过将其留空来跳过密码短语
对每台 PC 的 github 帐户重复此步骤
第 2 步:将您的公钥添加到 github
创建 ssh 密钥会创建 2 个文件。
在您喜欢的编辑器中打开 .pub 文件,然后复制文件的全部内容,包括您的电子邮件。
转到您的github 帐户 > 设置 > 部署密钥 > 添加部署密钥
将复制的内容粘贴到“key”文本字段中,并为其指定一个可识别的标题。例如“windows_your_username”,这样您就知道此密钥将从 Windows PC 上对您进行身份验证
在两个 github 帐户中为您在两台 PC 上创建的所有密钥添加部署密钥。
最后一步:配置本地git使用正确的密钥并测试访问
转到您的工作文件夹(或克隆的文件夹)
打开终端(或 powershell)并将 VScode(其他编辑器请参阅此处)设置为打开 git 配置文件的默认编辑器
git config --global core.editor "code --wait"
打开git配置文件
git config -e
在 [core] 下,添加带有私钥路径的 ssh 命令,例如
sshCommand = ssh -i ~/.ssh/id_ra_yourname_work_github
添加 [user] 并添加您的 github 用户名和电子邮件
将远程 url 指向您的存储库(如果尚未指向您的存储库)
您还可以使用 git 命令行工具来配置它们,而不是在编辑器中进行编辑。
对电脑上的所有工作文件夹重复此步骤。
您现在应该能够在同一系统上使用不同的 Github 帐户
坦白:这个答案的所有学分都归功于这篇文章。
| 归档时间: |
|
| 查看次数: |
7683 次 |
| 最近记录: |