多个github帐户在同一台​​计算机上?

Kev*_*ker 372 git version-control github

试着从我的计算机上处​​理我的实际"工作"回购,以及我在git hub上的个人回购.

工作帐户首先设置,一切都完美无瑕.

然而,我的个人帐户似乎无法推送到我的个人仓库,这是根据不同的帐户/电子邮件设置的.

我已经尝试将我的工作密钥复制到我的个人帐户,但这会引发错误,因为密钥只能附加到一个帐户.

如何从他们各自的github凭据中推送/拉出两个帐户?

Pav*_*van 248

您需要做的就是使用多个SSH密钥对配置SSH设置.

此外,如果您使用不同的角色使用多个存储库,则需要确保您的各个存储库相应地覆盖了用户设置:

设置用户名,电子邮件和GitHub令牌 - 覆盖个人仓库的设置 https://help.github.com/articles/setting-your-commit-email-address-in-git/

希望这可以帮助.

注意: 有些人可能需要不同的电子邮件用于不同的存储库,从git 2.13你可以通过编辑在以下位置找到的全局配置文件来在目录的基础上设置电子邮件:~/.gitconfig使用条件如下:

[user]
    name = Pavan Kataria
    email = defaultemail@gmail.com

[includeIf "gitdir:~/work/"]
    path = ~/work/.gitconfig
Run Code Online (Sandbox Code Playgroud)

然后您的工作特定config~/work/.gitconfig将如下所示:

[user]
    email = pavan.kataria@company.tld
Run Code Online (Sandbox Code Playgroud)

感谢@alexg在评论中告知我这一点.

  • 第一个链接现在重定向到用户与组织帐户的页面(不确定这是否是最初的预期).[本教程](http://net.tutsplus.com/tutorials/tools-and-tips/how-to-work-with-github-and-multiple-accounts/)很容易理解并解决了我的问题. (12认同)
  • 第3个链接现已中断(多个SSH密钥) (4认同)
  • @AlmasAdilbek现在已经将近3年了,链接必将打破并继续打破.小心找到替代文章或再次找到原始来源,以便您可以帮助我更新链接供我交配?我不能永远不断修复断开的链接. (4认同)
  • 这个很棒http://code.tutsplus.com/tutorials/quick-tip-how-to-work-with-github-and-multiple-accounts--net-22574 (4认同)
  • 如果不总结实际帖子中的关键步骤,这不是答案.这个答案已经遭受了链接腐烂一次,但没有做出必要的更新,以提供问题的实际答案. (3认同)
  • 您可能需要添加的重要警告:如果您的电子邮件不同,您推送的任何提交仍将显示为由您在“.gitconfig”中设置的电子邮件提交。解决方案是使用`git config user.email youremail@email.com`,它会针对该特定 Git 存储库在本地更改它,或者您可以使用条件根据您所在的文件夹自动更改配置的电子邮件。来源和操作方法:/sf/answers/3055788081/ (3认同)
  • 不起作用。我在网上看到的所有内容都不适用于 Windows。为什么这么复杂? (2认同)

Gre*_*zek 123

使用HTTPS:

将远程URL更改为https:

git remote set-url origin https://USERNAME@github.com/USERNAME/PROJECTNAME.git
Run Code Online (Sandbox Code Playgroud)

你很高兴去:

git push
Run Code Online (Sandbox Code Playgroud)

为了确保提交显示为USERNAME执行,也可以为此项目设置user.nameuser.email:

git config user.name USERNAME
git config user.email USERNAME@example.com
Run Code Online (Sandbox Code Playgroud)

  • 2021 年 8 月 13 日删除了对密码身份验证的支持。 (17认同)
  • 从另一个私有存储库快速下载的最简单的解决方案. (5认同)
  • 谢谢,这个答案很容易理解,并且在个人访问令牌的帮助下完成您需要的操作,因为删除了对密码身份验证的支持。 (5认同)
  • 该解决方案提供了最简单的方法,因为我不想添加更多 ssh 密钥。请注意,如果您已经使用“--global”标志设置了“user.name”和“user.email”,只需按照上面所说的操作在本地为该一个存储库进行设置即可。这解决了很多麻烦。现在删除旧的存储库...... (3认同)

Tha*_*you 55

成型

要在单独的github/bitbucket /任何帐户下管理git repo,您​​只需生成一个新的SSH密钥.

但在此之前,我们可以开始推/拉式回购与你的第二个身份,我们得让你进入形状-假设你的系统是设置具有典型id_rsaid_rsa.pub密钥对.现在你tree ~/.ssh看起来像这样

$ tree ~/.ssh
/Users/you/.ssh
??? known_hosts
??? id_rsa
??? id_rsa.pub
Run Code Online (Sandbox Code Playgroud)

首先,为密钥对命名 - 添加描述性名称将帮助您记住哪个密钥用于哪个用户/远程

# change to your ~/.ssh directory
$ cd ~/.ssh

# rename the private key
$ mv id_rsa github-mainuser

# rename the public key
$ mv id_rsa.pub github-mainuser.pub
Run Code Online (Sandbox Code Playgroud)

接下来,让我们生成一个新密钥对 - 在这里我将命名新密钥github-otheruser

$ ssh-keygen -t rsa -b 4096 -f ~/.ssh/github-otheruser
Run Code Online (Sandbox Code Playgroud)

现在,当我们看到tree ~/.ssh我们看到的时候

$ tree ~/.ssh
/Users/you/.ssh
??? known_hosts
??? github-mainuser
??? github-mainuser.pub
??? github-otheruser
??? github-otheruser.pub
Run Code Online (Sandbox Code Playgroud)

接下来,我们需要设置一个~/.ssh/config定义我们的密钥配置的文件.我们将使用适当的所有者读/写权限创建它

$ (umask 077; touch ~/.ssh/config)
Run Code Online (Sandbox Code Playgroud)

用您喜欢的编辑器打开它,并添加以下内容

Host github.com
  User git
  IdentityFile ~/.ssh/github-mainuser

Host github.com-otheruser
  HostName github.com
  User git
  IdentityFile ~/.ssh/github-otheruser
Run Code Online (Sandbox Code Playgroud)

据推测,您将有一些与您的主要github身份相关联的现有回购.出于这个原因,"默认"github.com Host设置为使用您的mainuser密钥.如果您不希望某个帐户优先于另一个帐户,我将向您展示如何更新系统上的现有存储库以使用更新的ssh配置.


将新的SSH密钥添加到github

头部到github.com/settings/keys添加新的公共密钥

您可以使用以下方法获取公钥内容:将其复制/粘贴到github

$ cat ~/.ssh/github-otheruser.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDBVvWNQ2nO5...
Run Code Online (Sandbox Code Playgroud)

现在您的新用户身份已全部设置 - 下面我们将向您展示如何使用它.


完成任务:克隆回购

那么这是如何与git和github一起工作的呢?好吧,因为你不能没有鸡蛋和鸡蛋,我们将看看克隆一个现有的回购.如果您的工作场所有新的github帐户,并且您已被添加到公司项目中,则这种情况可能适用于您.

假设github.com/someorg/somerepo已经存在并且您已添加到其中 - 克隆就像一样简单

$ git clone github.com-otheruser:someorg/somerepo.git
Run Code Online (Sandbox Code Playgroud)

粗体部分必须Host我们在您的~/.ssh/config文件中设置的名称匹配.这正确地将git连接到相应的IdentityFile并使用github正确地验证你


完成任务:创建一个新的仓库

好吧,因为你不能没有鸡蛋和鸡蛋,我们会考虑在你的二级账户上发布一个新的回购.这种情况适用于使用其辅助github帐户创建内容的用户.

让我们假设你已经在本地完成了一些工作,现在你已经准备好推向github了.如果你愿意,你可以跟随我

$ cd ~
$ mkdir somerepo
$ cd somerepo
$ git init
Run Code Online (Sandbox Code Playgroud)

现在配置此repo以使用您的身份

$ git config user.name "Mister Manager"
$ git config user.email "someuser@some.org"
Run Code Online (Sandbox Code Playgroud)

现在进行第一次提交

$ echo "hello world" > readme
$ git add .
$ git commit -m "first commit"
Run Code Online (Sandbox Code Playgroud)

检查提交以查看使用git log使用的新身份

$ git log --pretty="%H %an <%ae>"
f397a7cfbf55d44ffdf87aa24974f0a5001e1921 Mister Manager <someuser@some.org>
Run Code Online (Sandbox Code Playgroud)

好吧,是时候推向github了!由于github还不知道我们的新回购,首先去github.com/new并创建你的新回购 - 将其命名为somerepo

现在,要使用正确的身份/凭证将您的仓库配置为与github"对话",我们添加了一个远程.假设您的新帐户的github用户名是someuser......

$ git remote add origin github.com-otheruser:someuser/somerepo.git
Run Code Online (Sandbox Code Playgroud)

粗体部分绝对是关键的,它必须Host我们在您的~/.ssh/config文件中定义的部分匹配

最后,推动回购

$ git push origin master
Run Code Online (Sandbox Code Playgroud)

更新现有存储库以使用新的SSH配置

假设您已经克隆了一些repo,但现在您想要使用新的SSH配置.在上面的示例中,我们通过在SSH配置文件中分配您的先前id_rsa/ id_rsa.pub密钥对来保持现有的回购Host github.com.这没有什么不对,但我现在至少有5个github配置,我不喜欢将其中一个配置为"默认"配置 - 我宁愿明确每个配置.

在我们这之前

Host github.com
  User git
  IdentityFile ~/.ssh/github-mainuser

Host github.com-otheruser
  HostName github.com
  User git
  IdentityFile ~/.ssh/github-otheruser
Run Code Online (Sandbox Code Playgroud)

所以我们现在将其更新为此(以粗体显示)

Host github.com-mainuser
  HostName github.com
  User git
  IdentityFile ~/.ssh/github-mainuser

Host github.com-otheruser
  HostName github.com
  User git
  IdentityFile ~/.ssh/github-otheruser
Run Code Online (Sandbox Code Playgroud)

但这意味着现在任何带有github.com遥控器的现有仓库将不再使用此身份文件.但不要担心,这是一个简单的解决方案.

要更新任何现有的repo以使用新的SSH配置,只需打开repo的git配置文件并更新url!

$ cd existingrepo
$ nano .git/config
Run Code Online (Sandbox Code Playgroud)

更新远程原点字段(以粗体显示更改)

[remote "origin"]
        url = github.com-mainuser:someuser/existingrepo.git
        fetch = +refs/heads/*:refs/remotes/origin/*
Run Code Online (Sandbox Code Playgroud)

而已.现在你可以push/ pull心灵的内容


SSH密钥文件权限

如果您的公钥无法正常运行时遇到问题,SSH 对您目录中允许的文件权限~/.ssh和相应的密钥文件非常严格

根据经验,任何目录应该是700和任何文件应该是600- 这意味着它们是所有者读/写 - 没有其他组/用户可以读/写它们

$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/config
$ chmod 600 ~/.ssh/github-mainuser
$ chmod 600 ~/.ssh/github-mainuser.pub
$ chmod 600 ~/.ssh/github-otheruser
$ chmod 600 ~/.ssh/github-otheruser.pub
Run Code Online (Sandbox Code Playgroud)

我如何管理我的SSH密钥

我为每个连接的主机管理单独的SSH密钥,这样如果任何一个密钥被破坏,我就不必在我使用该密钥的每个其他地方更新密钥.这就像当你从Adobe获得有关其用户信息的1.5亿被盗的通知时 - 现在你必须取消该信用卡并更新依赖它的每项服务 - 这是多么令人讨厌.

这是我的~/.ssh目录的样子:.pem每个用户都有一个密钥,在我连接的每个域的文件夹中.我使用.pem密钥,所以每个密钥只需要一个文件.

$ tree ~/.ssh
/Users/naomik/.ssh
??? config
??? github.com
?   ??? naomik.pem
?   ??? someusername.pem
??? known_hosts
??? naomi.makes.software
?   ??? naomi.pem
??? somedomain.com
?   ??? someuser.pem
??? someotherdomain.org
    ??? someuser.pem
Run Code Online (Sandbox Code Playgroud)

这里是我的相应/.ssh/config文件 - 显然github的内容与回答关于github的这个问题有关,但这个答案旨在让你掌握在任意数量的服务/机器上管理ssh身份的知识.

Host github.com-naomik
  HostName github.com
  User git
  IdentityFile ~/.ssh/github.com/naomik.pem

Host github.com-someuser
  HostName github.com
  User git
  IdentityFile ~/.ssh/github.com/someusername.pem

Host naomi.makes.software
  User naomi
  IdentityFile ~/.ssh/naomi.makes.software/naomi.pem

Host somedomain.com
  HostName 162.10.20.30
  User someuser
  IdentityFile ~/.ssh/somedomain.com/someuser.pem

Host someotherdomain.org
  User someuser
  IdentityFile ~/.ssh/someotherdomain.org/someuser.pem
Run Code Online (Sandbox Code Playgroud)

从PEM密钥获取SSH公钥

上面你注意到我每个键只有一个文件.当我需要提供公钥时,我只需根据需要生成它.

所以当github请求你的ssh公钥时,运行这个命令将公钥输出到stdout - 在需要的地方复制/粘贴

$ ssh-keygen -y -f someuser.pem
ssh-rsa AAAAB3NzaC1yc2EAAAA...
Run Code Online (Sandbox Code Playgroud)

请注意,这也是我用于将密钥添加到任何远程计算机的过程.该ssh-rsa AAAA...值将复制到远程~/.ssh/authorized_keys文件中


将您的id_rsa/ id_rsa.pub密钥对转换为PEM格式

所以你想驯服你的关键文件并减少一些文件系统的残缺?将密钥对转换为单个 PEM非常简单

$ cd ~/.ssh
$ openssl rsa -in id_rsa -outform pem > id_rsa.pem
Run Code Online (Sandbox Code Playgroud)

或者,随着我们的例子上面,下面我们改名id_rsa -> github-mainuserid_rsa.pub -> github-mainuser.pub-所以

$ cd ~/.ssh
$ openssl rsa -in github-mainuser -outform pem > github-mainuser.pem
Run Code Online (Sandbox Code Playgroud)

现在只是为了确保我们已将此转换为正确,您将需要验证生成的公钥是否与您的旧公钥匹配

# display the public key
$ cat github-mainuser.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAA ... R++Nu+wDj7tCQ==

# generate public key from your new PEM
$ ssh-keygen -y -f someuser.pem
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAA ... R++Nu+wDj7tCQ==
Run Code Online (Sandbox Code Playgroud)

现在您拥有了自己的github-mainuser.pem文件,可以安全地删除旧文件github-mainusergithub-mainuser.pub文件 - 只需要PEM文件; 只需在需要时生成公钥^ _ ^


从头开始创建PEM密钥

您无需创建私钥/公钥对,然后转换为单个PEM密钥.您可以直接创建PEM密钥.

让我们创建一个 newuser.pem

$ openssl genrsa -out ~/.ssh/newuser.pem 4096
Run Code Online (Sandbox Code Playgroud)

获取SSH公钥是一样的

$ ssh-keygen -y -f ~/.ssh/newuser.pem
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACA ... FUNZvoKPRQ==
Run Code Online (Sandbox Code Playgroud)

  • 我知道这是一个老问题,但这并不能成为几乎每个答案都依赖于某个教程的链接的事实,因此会受到链接失效的影响。链接来源/引文很好,但如果您没有在此处发布的答案中总结关键部分,则不能依赖链接。 (3认同)

小智 24

通过在〜/ .ssh/config中为github.com创建不同的主机别名,并为每个主机别名提供自己的ssh密钥,您可以轻松地使用多个github帐户而不会产生混淆.那是因为github.com不是用户区分的,它总是只是git,而是用你用来连接的ssh键.只需使用自己的主机别名配置远程起源."

上述摘要由以下博客文章中的评论提供.

我发现这个解释最清楚了.它对我有用,至少截至2012年4月.

http://net.tutsplus.com/tutorials/tools-and-tips/how-to-work-with-github-and-multiple-accounts/


Mat*_*ton 22

来自mishaba的http://net.tutsplus.com/tutorials/tools-and-tips/how-to-work-with-github-and-multiple-accounts/的详细信息对我来说非常有用.

从该页面:

$ touch ~/.ssh/config
Run Code Online (Sandbox Code Playgroud)

然后将该文件编辑为类似的内容(每个帐户一个条目):

#Default GitHub
Host github.com
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_rsa

Host github-COMPANY
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_rsa_COMPANY
Run Code Online (Sandbox Code Playgroud)

  • 我还要注意,在执行克隆(以及可能的其他命令)时,需要使用"github.com"或"github-COMPANY",例如`git clone git @ github-COMPANY/repo/name.git`正确的ssh密钥. (8认同)

MK.*_*MK. 22

就我而言,我在 Git-Lab 中有工作帐户,在 GitHub 中有个人帐户。我的 Git-Lab 帐户已全局配置为可以从笔记本电脑中的所有目录进行访问,如下所示:

git config --global user.name WORK_USERNAME
git config --global user.email WORK_USERNAME@example.com
Run Code Online (Sandbox Code Playgroud)

因此,如果您正在寻找不使用 SSL 的解决方案,您可以通过git init在空文件夹中使用来实现,然后在该文件夹中插入您的个人帐户凭据:

git config user.name PERSONAL_USERNAME
git config user.email PERSONAL_USERNAME@example.com
Run Code Online (Sandbox Code Playgroud)

请注意,此处--global未设置,因为您只希望从那里访问您的个人 git,而不是在任何地方访问,因此该文件夹内的任何内容都将其 git 凭据连接到您的个人帐户,而其外部的 git 凭据将连接到您的工作帐户。

之后,您可以像这样克隆您的存储库git clone your_repo_link.git。然后会弹出一个新窗口并要求您使用 github 帐户登录。

要验证您的过程,请git config --list在您创建的文件夹中尝试,您应该看到工作和个人用户名以及电子邮件及其目录。

在该文件夹之外,如果您运行,git config --list您应该只能看到您的工作用户名和电子邮件。

就是这样,希望这对没有配置 SSL 的人有所帮助。


Dav*_*d H 11

我使用shell脚本将我切换到我想要"活跃"的任何帐户.基本上,您从一个全新的开始,正确配置一个帐户并运行,然后将这些文件移动到具有正确前缀的名称.从那时起,您可以使用命令"github"或"gitxyz"来切换:

# my github script
cd ~/.ssh

if [ -f git_dhoerl -a -f git_dhoerl.pub -a -f config_dhoerl ]
then
    ; 
else 
    echo "Error: missing new files"
    exit 1
fi 

# Save a copy in /tmp, just in case
cp id_rsa /tmp
cp id_rsa.pub /tmp
cp config /tmp
echo "Saved old files in /tmp, just in case"

rm id_rsa
rm id_rsa.pub
rm config
echo "Removed current links/files"

ln git_dhoerl id_rsa
ln git_dhoerl.pub id_rsa.pub
ln config_dhoerl config

git config --global user.email "dhoerl@<company>.com"
git config --global github.user "dhoerl"        
git config --global github.token "whatever_it_is"

ssh-add -D
Run Code Online (Sandbox Code Playgroud)

我对此很幸运.我还在Xcode(为你的Mac用户)创建了一个运行脚本,所以它不会构建我的项目,除非我有正确的设置(因为它使用git):

在Dependencies之后运行脚本(使用/ bin/ksh作为shell):

if [ "$(git config --global --get user.email)" != "dhoerl@<company>.com" ]
then
    exit 1
fi
Run Code Online (Sandbox Code Playgroud)

编辑:添加新文件存在的测试和复制旧文件到/ tmp以通过@naomik下面的注释.

  • 这是一场噩梦。如果有人在了解他们的“id_rsa”和“id_rsa.pub”密钥将被删除之前运行此脚本,他们可能会被锁定在远程之外。 (4认同)

Pra*_*V R 11

确保IdentityFile名称与在ssh密钥生成期间创建的名称相同.


Luk*_*kas 9

这个答案适合初学者(非git大师).我最近有这个问题,也许它只是我,但大多数答案似乎需要相当提前了解git.在阅读了包含此主题的几个堆栈溢出答案之后,以下是我需要采取的步骤,以便在GitHub帐户之间轻松切换(例如假设两个GitHub帐户,github.com/personalgitHub.com/work):

  1. 检查现有的ssh密钥:打开终端并运行此命令以查看/列出ls -al ~/.ssh
    具有扩展名的现有ssh密钥文件.pub是您的ssh密钥,因此您应该有两个用于personalwork帐户.如果只有一个或没有,那么生成其他明智的时间就跳过这个.

    -生成ssh密钥:登录github(个人或工作人员),导航到设置并复制相关的电子邮件.
    现在回到终端并运行ssh-keygen -t rsa -C "the copied email",你会看到:

    生成公共/私有rsa密钥对.
    输入文件中保存密钥(/.../.ssh/id_rsa):


    id_rsa是默认名称为即将生成的SSH密钥,以便拷贝的路径,并重新命名默认情况下,例如 /.../.ssh/id_rsa_work当发电工作帐户.提供密码或只是输入忽略,你会读到像钥匙的randomart图像是:和图像.完成.
    为您的第二个github帐户再次重复此步骤.确保使用正确的电子邮件地址和不同的ssh密钥名称(例如id_rsa_personal)以避免覆盖.
    在此阶段,您应该ls -al ~/.ssh再次运行时看到两个ssh键.
  2. 将ssh密钥与gitHub帐户关联:下一步是复制其中一个ssh密钥,运行此密钥,但替换自己的ssh密钥名称:pbcopy < ~/.ssh/id_rsa_work.pub替换id_rsa_work.pub为您所谓的ssh密钥.
    现在我们的ssh密钥被复制到剪贴板,返回到github帐户[确保您已复制的ssh密钥登录到工作帐户id_rsa_work]并导航到
    设置 - SSH和GPG密钥并单击新建SSH密钥按钮(不是新的GPG密钥顺便提一:D)
    给这个密钥一些标题,粘贴密钥并单击添加SSH密钥.你现在已经成功添加了ssh密钥或者注意到它一直都在那里很好(或者你得到一个错误,因为你选择了新的GPG密钥 而不是新的SSH密钥:D).
  3. 将ssh密钥与gitHub帐户关联:对您的第二个帐户重复上述步骤.
  4. 编辑全局git配置:最后一步是确保全局配置文件知道所有github帐户(可以这么说).
    运行git config --global --edit以编辑此全局文件,如果打开vim并且您不知道如何使用它,请按i进入插入模式,按如下所示编辑文件,然后按esc :wq键退出插入模式:

    [inside this square brackets give a name to the followed acc.] name = github_username email = github_emailaddress [any other name] name = github_username email = github_email [credential] helper = osxkeychain useHttpPath = true

完成!,现在当你试图从回购中推或拉时,你会被问到哪个GitHub帐户应该与这个回购链接,并且只询问一次,本地配置会记住这个链接,而不是全局配置,这样你就可以工作了在不同的回购中,与不同的帐户链接,而不必每次都编辑全局配置.


Cra*_*SFT 8

刚刚为 Windows 解决了这个问题,使用每个 repo 的凭据:

cd c:\User1\SomeRepo
git config --local credential.https://github.com.user1 user1
git config --local credential.useHttpPath true
git config --local credential.helper manager
git remote set-url origin https://USERNAME@github.com/USERNAME/PROJECTNAME.git
Run Code Online (Sandbox Code Playgroud)

凭证的格式。https://github.com。告诉凭证助手凭证的 URL。'useHttpPath' 告诉凭证管理器使用凭证的路径。如果省略 useHttpPath ,则凭证管理器将为https://github.com存储一个凭证。如果包含它,那么凭证管理器将存储多个凭证,这正是我真正想要的。


tec*_*oke 7

有很多答案解释了如何完成您所要求的任务,但我想提供不同的观点。

我认为将工作和个人事务分开是有道理的。在所有操作系统上的用户帐户之间切换非常简单,因此您只需为工作和娱乐创建单独的操作系统帐户,并在每个帐户中登录不同的 github 帐户即可。

保持清晰的关注点分离还可以...

  • 防止您的工作文件与个人文件混合在一起
  • 降低对错误资源执行操作的风险
  • 可能将安全漏洞限制在一组帐户/凭证内


小智 5

更简单易修,避免造成混乱。

Windows用户可以将多个或不同的git帐户用于不同的项目。

请执行以下步骤:转到控制面板,然后搜索凭据管理器。然后转到凭据管理器-> Windows凭据

现在,删除通用凭证标题下的git:https // github.com节点

这将删除当前凭据。现在您可以通过git pull添加任何项目,它将询问用户名和密码。

当您遇到其他帐户的任何问题时,请执行相同的过程。

谢谢

参考图片


Abu*_*oeb 5

我在这里看到了很多可能的解决方法。作为一种快速解决方案,@Greg 的解决方案似乎相对简单。ssh keys但是,从长远来看,最好为所有不同的帐户单独设置。该视频简要演示了这一点。以下是该视频博客中提到的步骤。

步骤 1 - 为新帐户创建新的 SSH 密钥并将其保存在单独的文件中(例如 ~/.ssh/id_rsa_new_account_name),而不是原始文件中,即~/.ssh/id_rsa

ssh-keygen -t rsa -C "your-email-address"
Run Code Online (Sandbox Code Playgroud)

第 2 步 - 附上新密钥

  • 接下来,登录您的第二个 GitHub 帐户
  • 浏览至,然后在该部分中Account Overview附加新密钥。~/.ssh/id_rsa_new_account_name.pubSSH Public Keys
  • 在终端中,通过键入 告诉 SSH 添加新身份ssh-add ~/.ssh/id_rsa_new_account_name。如果成功,您将看到 的响应Identity Added

第 3 步 - 创建配置文件

touch ~/.ssh/config
Run Code Online (Sandbox Code Playgroud)

并将以下内容保存到文件中

#Default GitHub
Host github.com
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_rsa

#New Account
Host github-new-account-name
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_rsa_new_account_name
Run Code Online (Sandbox Code Playgroud)

第 4 步 - 现在尝试一下, 每次您想要使用新帐户和关联的存储库时,请为相应的存储库键入此内容

git remote add origin git@github-new-account-name:your-domain.com/your-repo.git
Run Code Online (Sandbox Code Playgroud)