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

时间:2010-10-05 00:28:36

标签: git version-control github

尝试从我的电脑上处理我的实际“工作”回购,以及我在git hub上的个人回购。

首先设置了工作帐户,所有工作都完美无瑕。

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

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

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

34 个答案:

答案 0 :(得分:215)

您需要做的就是使用多个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

然后你的工作特定配置〜/ work / .gitconfig看起来像这样:

[user]
    email = pavan.kataria@company.tld

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

答案 1 :(得分:112)

使用HTTPS:

将远程网址更改为https:

git remote set-url origin https://USERNAME@github.com/USERNAME/PROJECTNAME.git

你很高兴:

git push

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

git config user.name USERNAME
git config user.email USERNAME@example.com

答案 2 :(得分:49)

成型

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

但在我们开始使用您的第二个身份开始推/拉回购之前,我们必须让您成型 - 让我们假设您的系统设置了典型的id_rsaid_rsa.pub密钥对。现在你的tree ~/.ssh看起来像这样

$ tree ~/.ssh
/Users/you/.ssh
├── known_hosts
├── id_rsa
└── id_rsa.pub

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

# 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

接下来,让我们generate a new key pair - 在这里我将命名新密钥github-otheruser

$ ssh-keygen -t rsa -b 4096 -f ~/.ssh/github-otheruser

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

$ tree ~/.ssh
/Users/you/.ssh
├── known_hosts
├── github-mainuser
├── github-mainuser.pub
├── github-otheruser
└── github-otheruser.pub

接下来,我们需要设置一个~/.ssh/config文件来定义我们的密钥配置。我们将使用proper owner-read/write-only permissions

创建它
$ (umask 077; touch ~/.ssh/config)

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

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

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

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

将新的SSH密钥添加到github

转到github.com/settings/keys添加新的公开

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

$ cat ~/.ssh/github-otheruser.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDBVvWNQ2nO5...

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

完成任务:克隆回购

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

让我们说github.com/someorg/somerepo已经存在并且您已添加到其中 - 克隆就像

一样简单
$ git clone github.com-otheruser:someorg/somerepo.git

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

正确地验证您

完成工作:创建新的仓库

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

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

$ cd ~
$ mkdir somerepo
$ cd somerepo
$ git init

现在配置此回购以使用您的identity

$ git config user.name "Mister Manager"
$ git config user.email "someuser@some.org"

现在进行第一次提交

$ echo "hello world" > readme
$ git add .
$ git commit -m "first commit"

检查提交以使用git log

查看您的新身份
$ git log --pretty="%H %an <%ae>"
f397a7cfbf55d44ffdf87aa24974f0a5001e1921 Mister Manager <someuser@some.org>

好的,有时间推向github!由于github还不了解我们的新回购,首先转到github.com/new并创建新的回购 - 将其命名为 somerepo

现在,将您的回购配置为&#34; talk&#34;使用正确的身份/凭证到github,我们添加了一个遥控器。假设您的新帐户的github用户名为someuser ...

$ git remote add origin github.com-otheruser:someuser/somerepo.git

粗体部分绝对至关重要且必须与我们在Host文件中定义的~/.ssh/config相匹配

最后,推动回购

$ git push origin master

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

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

在我们开始之前

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

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

因此,我们现在将其更新为此内容(粗体中的更改)

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

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

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

$ cd existingrepo
$ nano .git/config

更新远程源字段(更改为粗体

[remote "origin"]
        url = github.com-mainuser:someuser/existingrepo.git
        fetch = +refs/heads/*:refs/remotes/origin/*

那就是它。现在,您可以push / pull了解您内心的内容

SSH密钥文件权限

如果您的公钥无法正常运行时遇到问题,则对~/.ssh目录中允许的file permissions及相应的密钥文件的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

我如何管理我的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

这里是我对应的/.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

从PEM密钥获取SSH公钥

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

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

$ ssh-keygen -y -f someuser.pem
ssh-rsa AAAAB3NzaC1yc2EAAAA...

请注意,这也是我用于将密钥添加到任何远程计算机的过程。 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

或者,按照上面的示例,我们重命名了id_rsa -> github-mainuserid_rsa.pub -> github-mainuser.pub - 所以

$ cd ~/.ssh
$ openssl rsa -in github-mainuser -outform pem > github-mainuser.pem

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

# 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==

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

从头开始创建PEM密钥

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

让我们创建一个newuser.pem

$ openssl genrsa -out ~/.ssh/newuser.pem 4096

获取SSH公钥是相同的

$ ssh-keygen -y -f ~/.ssh/newuser.pem
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACA ... FUNZvoKPRQ==

答案 3 :(得分:23)

通过在〜/ .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/

答案 4 :(得分:21)

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

从该页面开始:

$ touch ~/.ssh/config

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

#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

答案 5 :(得分: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
我真的很幸运。我还在Xcode中创建了一个运行脚本(对于你的Mac用户),所以它不会构建我的项目,除非我有正确的设置(因为它使用git):

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

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

编辑:添加了对新文件存在的测试,并将旧文件复制到/ tmp,以便通过@naomik在下面发表评论。

答案 6 :(得分:8)

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

  1. 检查现有的ssh密钥: 打开终端并运行此命令以查看/列出现有的ssh密钥ls -al ~/.ssh
    扩展名为{{的文件1}}是您的ssh密钥,因此您应该为.pubpersonal帐户分配两个密钥。如果只有一个或没有,则生成其他明智的时间跳过此。

    - 生成ssh密钥:登录github(个人或工作人员),导航至设置并复制相关的电子邮件。
    现在返回终端并运行work,您将看到:

    生成公钥/私钥rsa密钥对 输入要保存密钥的文件(/.../。ssh / id_rsa):

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

    git config --global --edit

  5. 完成!,现在当尝试推送或从回购中提取时,您将被问到哪个GitHub帐户应该与此回购链接并且只询问一次,本地配置将记住此链接而不是全局配置,以便您可以处理与不同帐户链接的不同存储库,而无需每次都编辑全局配置。

答案 7 :(得分:8)

  • 转到〜/ .ssh
  • 创建名为config(没有扩展名)的文件
  • 打开配置文件&amp;添加以下代码。 (根据您的帐户更改)

    1. 帐户1

      # account_1
      Host gitlab.com-account_1
      HostName gitlab.com
      User git
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa_account_1
      
    2. 帐户2

      # Account2
      Host gitlab.com-Account2
      HostName gitlab.com
      User git
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa_Account2
      
    3. 帐户3

      # Account_3
      Host github.com-Account3
      HostName github.com
      User git
      PreferredAuthentications publickey
      IdentityFile ~/.ssh/id_rsa_Account_3
      
  • 按如下方式添加远程网址

    1. 帐户1

      git remote add origin git@gitlab.com-account_1:group_name/repo_name.git
      
    2. 帐户2

      git remote add origin git@gitlab.com-Account2:group_name/repo_name.git
      
    3. 帐户3

      git remote add origin github.com-Account3:github_username/repo_name.git
      
  

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

答案 8 :(得分:3)

更简单,更容易修复以避免混淆..

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

以下步骤: 转到“控制面板”并搜索“凭据管理器”。 然后转到Credential Manager - &gt; Windows凭据

现在删除Generic Credentials Heading下的 git:https // github.com 节点

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

如果您遇到与其他帐户有任何问题,请执行相同的操作。

由于

refer to image

答案 9 :(得分:2)

我发现这个宝石非常有用:sshwitch

https://github.com/agush22/sshwitch
http://rubygems.org/gems/sshwitch

有助于切换ssh密钥。记得先备份一切!

另外,为了确保提交具有与之关联的正确电子邮件地址,我确保〜/ .gitconfig文件具有正确的电子邮件地址。

答案 10 :(得分:2)

除了为多个帐户创建多个SSH密钥之外,您还可以考虑使用相同的帐户电子邮件在每个项目上添加协作者并永久存储密码。

#this store the password permanently
$ git config --global credential.helper wincred

我使用不同的电子邮件设置了多个帐户,然后将每个帐户上的相同用户和电子邮件作为其中一个协作者。通过这种方式,我可以在不添加SSH密钥或切换到其他用户名的情况下访问所有帐户,并通过电子邮件进行身份验证。

答案 11 :(得分:2)

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

git config --global user.name WORK_USERNAME
git config --global user.email WORK_USERNAME@example.com

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

git config user.name PERSONAL_USERNAME
git config user.email PERSONAL_USERNAME@example.com

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

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

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

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

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

答案 12 :(得分:1)

使用泊坞窗!

这可能并不适合所有人,但这就是我最终为自己做的。

我现在所有的开发都是在 docker 容器中完成的。我是 vim 用户,但我知道 VSCode 有插件可以处理 docker 容器。

因此,由于我有用于不同项目/语言的不同 docker 容器,因此我可以在每个容器中使用不同的 git 配置。问题解决了。

答案 13 :(得分:1)

让我的私人存储库使用SSH密钥对工作。在Windows的git上对此进行了测试。

来源:https://docs.github.com/en/free-pro-team@latest/github/authenticating-to-github/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent

A。生成公钥和私钥对

  1. 启动git bash
  2. 运行{-# LANGUAGE GADTSyntax #-} data Exp where B :: Bool -> Exp MyInt :: Int -> Exp
  3. 当系统提示您“输入要保存密钥的文件”时,按Enter键接受默认设置。
  4. 按Enter键输入空白密码。
  5. 启动ssh代理:> :type MyInt MyInt :: Int -> Exp
  6. 向ssh代理添加私钥并存储密码:<div class="collapse in show" id="collapseExample">

B。将SSH密钥添加到GitHub帐户

  1. 将公钥复制到剪贴板:ssh-keygen -t ed25519 -C "your_email@example.com"
  2. 在GitHub上,转到“个人资料”->“设置”->“ SSH密钥”->“新SSH密钥”
  3. 给出标题。例如。 “ MacBook Pro上的Windows”
  4. 粘贴密钥,然后单击“添加SSH密钥”。

C。测试SSH连接

  1. 输入:eval $(ssh-agent)
  2. 对任何警告消息都单击“是”。
  3. 它应该显示:“嗨,用户名!...”,表示测试成功。

D。设置本地存储库以使用SSH密钥

  1. 更改电子邮件和用户名:
ssh-add ~/.ssh/id_ed25519
  1. 更新远程链接以使用git。首先列出远程URI:
clip < ~/.ssh/id_ed25519.pub

E。测试

ssh -T git@github.com

答案 14 :(得分:1)

选项0 :您不想弄乱OS设置。.您只想使用一个回购协议使用不同的公共密钥提交到另一个github帐户。

解决方案

  1. 创建新密钥: ssh-keygen -t rsa -b 4096 -f〜/ .ssh / alt_rsa

  2. 将密钥添加到密钥集中: ssh-add -K〜/ .ssh / alt_rsa

  3. 将发布密钥复制并添加到github帐户中:(请参阅github说明)

  4. 使用github测试密钥: ssh -i〜/ .ssh / alt_rsa T git@github.com

  5. 使用git协议(非HTTP )克隆仓库: git clone git @ github:myaccount ...

  6. 在克隆的仓库中:

    git config core.sshCommand“ ssh -i〜/ .ssh / alt_rsa -F / dev / null”
    git config user.name [myaccount]
    git config user.email [myaccount电子邮件]

  7. 现在您应该能够正确进行git push了,而不会干扰您的日常git帐户

答案 15 :(得分:1)

最简单直接的方法(IMHO)-没有配置文件也没有太多麻烦

只需创建另一个ssh密钥。

假设您有一个新的GitHub帐户,只需为其创建一个新密钥:

sh-keygen -t rsa -C "email@work_mail.com" -f "id_rsa_work_user1"`

现在您应该拥有旧的和新的,要查看它们,请运行:

ls -al ~/.ssh

您只需运行一次即可。

从现在开始,每次要在两者之间切换时,只需运行:

ssh-add -D
ssh-add ~/.ssh/id_rsa_work_user1 #make to use this without the suffix .pub

要切换到旧版本,请再次运行:

 ssh-add -D
 ssh-add ~/.ssh/<previous id_rsa>

答案 16 :(得分:0)

如果您恰好安装了WSL,则可以有两个单独的git帐户-一个在WSL上,一个在Windows上。

答案 17 :(得分:0)

您无需为个人和工作维护两个不同的帐户。实际上,Github建议您维护一个帐户并帮助您合并两者。

如果您认为无需维护多个帐户,请按照以下链接进行合并。

https://help.github.com/articles/merging-multiple-user-accounts/

答案 18 :(得分:0)

无需处理 SSH 密钥对的简单方法

只需在存储库中本地更改 user.nameuser.email。到您想要推送到该存储库的那些。

示例:我在 gitlab 中有一个工作帐户,有一个项目。克隆这个项目/存储库后,在终端中,我输入:

git config user.name "my-work-username"
git config user.email "my-work-email-id"

现在,假设我在 Gitlab 中有另一个个人项目/存储库,我想将其与我的个人帐户相关联。就像上面一样,克隆后,我输入:

git config user.name "my-personal-username"
git config user.email "my-personal-email-id"

希望这会有所帮助。如果它对你有用,请点赞! :)

答案 19 :(得分:0)

我在这里看到了很多可能的解决方法。作为快速修复,@Greg 的修复似乎相对容易。但是,从长远来看,最好为所有不同的帐户设置单独的 ssh keys。此 video 简要演示了它。以下是 video blog 中提到的步骤。

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

ssh-keygen -t rsa -C "your-email-address"

第 2 步 - 附加新密钥

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

第 3 步 - 创建配置文件

touch ~/.ssh/config

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

#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

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

git remote add origin git@github-new-account-name:your-domain.com/your-repo.git

答案 20 :(得分:0)

相反,您只需将您的新电子邮件 ID 添加到您的个人 git 帐户。这样您就不需要添加另一个 SSH 密钥。只需通过执行配置您的新电子邮件 git config --global user.email newemail。然后您将能够克隆该存储库。

答案 21 :(得分:0)

与其他答案不同,您需要按照几个步骤在同一台计算机上使用两个不同的 github 帐户,对我而言,它适用于两个步骤

你只需要:

1)为~/.ssh位置下具有不同名称的每个帐户生成 SSH公钥和私钥对

2)将生成的公开键添加到 Settings&gt;&gt;下的相应帐户SSH and GPG keys&gt;&gt; New SSH Key

要生成 SSH公钥和私钥对,请使用以下命令:

cd ~/.ssh
ssh-keygen -t rsa -C "email@work.com" -f "id_rsa_WORK"
ssh-keygen -t rsa -C "email@gmail.com" -f "id_rsa_PERSONAL"

根据上述命令,我们会为您的工作帐户(ex-git.work.com)和{{1}创建id_rsa_WORKid_rsa_WORK.pub个文件将为您的个人帐户(例如前github.com)创建id_rsa_PERSONAL

创建后,复制每个公开(id_rsa_PERSONAL.pub)文件中的内容,并为每个帐户执行第2步。

PS :如果您的两个帐户的主机名不同,则无需为其他答案中提及的*.pub文件下的每个git帐户创建主机条目。

答案 22 :(得分:0)

可能有多种方法可以做到,但以下解决方案对我有用,而且非常简单。 我不是要尝试使用 SSH,我的步骤和解决方案基于 HTTPS

  1. 在您的本地机器上创建您的项目目录。示例 d:\test_git_multiple_account

  2. 转到文件夹“test_git_multiple_account”

  3. 在此处添加几个文件到 DIR

  4. 在此处打开 Git bash 并运行以下命令

    a. git init // initialization 
    b. git add , // add 
    c. git commit -m "initial commit"
        you will get following output : in my case i use to add one python file created 
        from code.
        **[master (root-commit) d4defd9] initial commit
        2 files changed, 4 insertions(+)
        create mode 100644 .vscode/settings.json
        create mode 100644 Hello.py**
    
    d.  git remote add origin <HTTPS repo link>
    e.  git remote -v // check the repo version 
    f.  git push origin master
        it will ask your git hub user name and password via popup screen. 
        you will get the following output 
        Counting objects: 100% (5/5), done.
        Delta compression using up to 4 threads
        Compressing objects: 100% (3/3), done.
        Writing objects: 100% (5/5), 411 bytes | 31.00 KiB/s, done.
        Total 5 (delta 0), reused 0 (delta 0), pack-reused 0
        remote:
        remote: Create a pull request for 'master' on GitHub by visiting:
        remote:      https://github.com/vishvadeepaktripathi/Hello_Py/pull/new/master
        remote:
        To https://github.com/vishvadeepaktripathi/Hello_Py.git
         * [new branch]      master -> master
    

这将创建我在此处命名为 master 的新分支。 一旦您更改了分支,您就可以提交到主分支,在这种情况下,您现有的文件将被删除。因此,我建议将主分支结帐到第一步,然后继续执行每个命令,以防您想直接结帐到主分支。 注意 在首次登录时,它可能会给您一条错误消息,并再次要求您输入登录名和密码,然后它会将您的更改发布到 Git 中心。

完成此操作后,您将收到一条消息,将新的拉取请求发送到您的 github 帐户。 您可以将更改从主分支合并到主分支。

我在这里创建了主分支,您根据自己的选择命名了分支。 附上屏幕截图。 enter image description here

答案 23 :(得分:0)

将github中的认证方式从SSH改为HTTP。这样它就不会在乎您是否使用工作 github 帐户登录并且您尝试与您的个人 github 帐户进行远程交互(该帐户的凭据与您当前登录到本地计算机上的凭据不同)。

答案 24 :(得分:0)

在一台 Windows 机器上管理多个 GitHub 帐户 (HTTPS)

假设您之前在您的机器上使用了 git 并配置了 git 全局配置文件。要检查它,请打开终端并:

git config --global -e

它会打开您的编辑器,您可能会看到如下内容:

[user]
    email = yourEmail@gmail.com
    name = Your_Name
...

这很棒,因为您可以将代码推送到 GitHub 帐户,而无需每次都输入凭据。 但是如果它需要从另一个账户推送到回购呢?在这种情况下,git 将拒绝 403 err,您必须更改全局 git 凭据。为了使这个舒适的 lat 集在凭证管理器中存储一个 repo 名称:

git config --global credential.github.com.useHttpPath true

再次检查它打开配置 git 配置 --global -e 你会看到新的配置行

[credential]
    useHttpPath = true
...

就是这样。现在,当您第一次推送到任何帐户时,您会看到一个弹出窗口 截图_1

输入特定于此回购帐户凭据,这将“绑定”此回购帐户。因此,在您的机器中,您可以根据需要指定任意数量的帐户/存储库。

有关更详细的解释,您可以观看我在 youtube 上找到的这个很酷的视频: https://youtu.be/2MGGJtTH0bQ

答案 25 :(得分:0)

另一种更简单的方法是使用多个桌面应用程序,例如我正在做的事情,在Github桌面上使用帐户A,而在Github Kraken上使用帐户B

答案 26 :(得分:0)

使用个人访问令牌的个人目录.gitconfig

如果您不想修改主机文件,使用SSH密钥或为每个存储库设置一个.gitconfig,那么您可以使用一个您自己的.gitconfig,基本上是从根级别配置中包含的。给定OSX目录结构,例如

# root level git config
~/.gitconfig

# your personal repos under some folder like
../personal/
../home/
~/Dropbox/

在您的个人文件夹中添加.gitconfig,例如~/Dropbox/.gitconfig

[user]
    email = first.last@home.com
    name = First Last
[credential]
    username = PersonalGithubUsername
    helper = osxkeychain

在您的根目录.gitconfig中添加一个includeIf部分,以便在您位于个人目录中时提供您的个人配置。只要includeIf在您要覆盖的设置之后,那里的所有设置都将覆盖根配置。

[user]
    email = first.last@work.com
    name = "First Last"
[credential]
    helper = osxkeychain
[includeIf "gitdir:~/Dropbox/**"]
    path = ~/Dropbox/.gitconfig

尝试推送到您的个人存储库或从您的私人存储库中拉出

git push
# prompts for password

系统提示时,输入您在account developer settings中创建的个人密码或更好的个人访问令牌。输入该令牌作为您的密码。

假设您已经在使用git-credential-osxkeychain,则您的个人凭据应存储在钥匙串中,这样将显示两个github条目,但是帐户不同。

OSX keychain 2 entires for Github

答案 27 :(得分:0)

如果您已经创建或克隆了另一个存储库,但是您无法使用以下命令从originupstream提取ssh密钥到该目录,则无法使用。

这是我在这里遇到的错误:

Warning: Permanently added the RSA host key for IP address '61:fd9b::8c52:7203' to the list of known hosts.
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

我使用以下命令,此命令有效:

ssh-add ~/.ssh/id_rsa_YOUR_COMPANY_NAME

答案 28 :(得分:0)

  1. 导航到要将更改推送到另一个GitHub帐户的目录。
  2. 在终端/命令行中创建一个新的SSH密钥。

    ssh-keygen -t rsa -C“您的电子邮件地址”

  3. 然后将显示以下内容:

    生成公共/私有rsa密钥对。     输入要在其中保存密钥的文件(/home/your_username/.ssh/id_rsa):

复制并粘贴路径,后跟文件的可识别名称:

/home/your_username/.ssh/id_rsa_personal

4)然后它将要求您提供以下信息:

Enter passphrase (empty for no passphrase):
Enter same passphrase again:

5)现在,您可以键入以下命令来查看本地计算机上的所有SSH密钥:

ls -al ~/.ssh

您应该能够看到新的SSH密钥文件。如您所见,我同时拥有id_rsa_test和id_rsa_personal.pub。

drwx------  2 gmadmin gmadmin 4096 Nov 16 22:20 .
drwxr-xr-x 42 gmadmin gmadmin 4096 Nov 16 21:03 ..
-rw-------  1 gmadmin gmadmin 1766 Nov 16 22:20 id_rsa_personal
-rw-r--r--  1 gmadmin gmadmin  414 Nov 16 22:20 id_rsa_personal.pub
-rw-r--r--  1 gmadmin gmadmin  444 Nov  6 11:32 known_hosts

6)接下来,您需要复制存储在id_rsa_personal.pub文件中的SSH密钥。您可以在自己选择的文本编辑器中打开它。我当前正在使用原子,因此我使用以下命令打开了文件:

atom ~/.ssh/id_rsa_personal.pub

然后您将获得与此类似的内容:

ssh-rsa AAB3HKJLKC1yc2EAAAADAQABAAABAQCgU5 + ELtwsKkmcoeF3hNd7d6CjW + dWut83R / Dc01E / YzLc5ZFri18doOwuQoeTPpmIRVDGuQQsZshjDrMkHXNxLhCnHxLhCnWhKnKlKnXChXLgW1L

7)复制并导航到您的GitHub帐户→设置→SSH和GPG密钥 8)单击新建SSH密钥。复制密钥,为其命名并添加。 9)从终端添加密钥

ssh-add ~/.ssh/id_rsa_personal
Enter passphrase for /home/your_username/.ssh/id_rsa_personal: 

10)配置用户和密码。

git config --global user.name "gitusername"
git config --global user.email "gitemail"

11)我们准备立即提交并推送。

git init
git add .
git commit 
git push

答案 29 :(得分:0)

如果您不想弄乱这里提到的~/.ssh/config文件,可以在要从另一个帐户提交的仓库中运行git config core.sshCommand "ssh -i ~/.ssh/custom_id_rsa"

其余设置相同:

  1. 使用ssh-keygen -t rsa -f ~/.ssh -f ~/.ssh/custom_id_rsa

  2. 为第二个帐户创建新的SSH密钥
  3. 使用您的其他帐户登录github,转到https://github.com/settings/keys,然后粘贴~/.ssh/custom_id_rsa.pub

  4. 的内容
  5. 确保您使用SSH代替HTTPS作为远程URL:git remote set-url origin git@github.com:upstream_project_teamname/upstream_project.git

答案 30 :(得分:0)

您应该也一定不要使用某些通用凭据推送到项目。在新机器上启动后,请按照以下步骤设置并正确使用您的gitlab凭据:

  • 在计算机上创建公共/私有ssh密钥
  • 将公钥复制粘贴到gitlab / github ui界面(任何通过cmd线提示操作方法的人都将获得免费啤酒...)
  • 确保您通过git而不是http url克隆存储库
  • 设置git别名,以避免不断在git命令中键入相同的前缀
  • 在git commit期间始终使用作者和电子邮件标志
  • 正常使用git

所有这些如下:

df1 = df[all_results != 0]
df1.idxmin()
print(df1.idxmin())

答案 31 :(得分:0)

答案 32 :(得分:0)

对于Windows,只是针对每个回购使用凭据进行了计算:

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

凭据的格式。https://github.com。告诉凭证帮助者凭证的URL。 “ useHttpPath”告诉凭证管理器使用凭证的路径。如果忽略useHttpPath,则凭证管理器将为https://github.com存储一个凭证。如果包含在内,则凭证管理器将存储多个凭证,这正是我真正想要的。

答案 33 :(得分:-1)

Here是一个链接,它以一种非常容易和不言自明的方式逐步说明了如何进行操作。

在同一台PC上添加多个GitHub帐户主要有四个主要步骤。

第1步:为所有帐户创建SSH密钥

第2步:将SSH密钥添加到SSH代理

步骤3:将SSH公钥添加到Github

第4步:创建配置文件并进行主机登录

可以找到说明的步骤here