Fork me on GitHub

在一台电脑上用两个GitHub账号

2022-05-14 中文

技术

GitHub

要切换使用两个GitHub账号,Git终端实在搞不来,试一试用GitHub桌面版吧!

前言

我有两个GitHub账号,分别有很多项目,之前私人电脑上只放了一个账号的项目,电脑里装了Git终端和GitHub桌面版,都用的是这个账号1,一直相安无事。

后来账号2的项目我也想用这台电脑来开发,那不如试一试在同一台电脑上登入2个GitHub账号吧!

Git终端的场合

试了下在电脑上删除credentials manager里面的账号1,配置账号2。

我以为这样就是Git终端用账号2,GitHub桌面版用账号1了,但其实不是的。

一开始,我把账号2的项目下载到电脑上,修改之后commit并push,都没问题。接下来需要修改账号1的项目的时候,问题来了。

我以为GitHub桌面版还是登入了账号1,于是commit并试图push。但是commit完之后,系统提示我要提交pull request,我整个人就问号了,难道我不是在用账号1提交吗?

看来真的不是,credentials manager里面改了,则不只是Git终端,GitHub桌面版也会受影响。

但是没办法,既然都commit完了,那就用账号2提交pull request,然后账号1合并这个request,这次就算完了。

于是GitHub上的账号1的项目就留下了账号2的提交痕迹,这是我不想看到的,但是也没办法了。

这个故事告诉我们: 一台电脑上是不能同时登入2个GitHub账号的

GitHub桌面版的场合

如何登入

在GitHub官网下载并安装GitHub桌面版软件之后,打开它,点 Sign in,软件会唤起你的默认浏览器,让你登入GitHub,然后授权使用。如果浏览器已经登入了GitHub账号,那么第一次应该还是要授权的,如果不是第一次则会直接登入成功,什么都不问你。

那么如果你想在GitHub桌面版上登入另一个账号,首先就要在电脑的默认浏览器的普通模式下登入第二个账号,然后在退出了第一账号的GitHub桌面版点登入。

如果默认浏览器里面登入的还是原来的账号,而你在隐身模式下登入第二个账号,或者在别的浏览器里登入了第二个账号,都是没有用的,因为软件会直接登入默认浏览器的普通模式的第一账号,什么都不问你。

如何登出及切换账号

GitHub桌面版目前只有英文版,官方没有中文版。

软件内找不到任何类似log outlog offsign outswitch account之类的按钮,于是我只好搜索"how to log out GitHub destop",感觉自己很愚蠢。

于是找到了正确的登出方式。

在菜单里找到 File > Options ,然后点 Account > sign out,然后记得去默认浏览器里登入第二个账号,再回来GitHub桌面版,从 File > Options 里面找到 Account > sign in

但是还没完。

切换账号后如何提交代码

假设你成功从账号1切换到了账号2。

直到刚才软件都还在对账号1的repo进行操作,此时虽然登入了账号2,但软件界面里仍然显示的是账号1的repo,如果直接切换到账号2的repo,你会发现commit那里的账号头像还是账号1的,但是带了一个三角形的警告标志,左击之后看到提示 This commit will be misattributed,也就是说这次commit会仍然用账号1的名义。

我也不知道这是什么原理,但是总之这里需要在警告内容下的下拉菜单中选择当前登入的账号,点 update email 来确认。

确认完了之后,你会发现头像还是账号1的,那怎么办?

再切换一个repo,点击三角警告,update email,此时头像终于变了。

然后再切换回要提交的那个repo,这次就对了了。

为了避免不必要的麻烦,我推荐的操作步骤是这样:

  1. GitHub桌面版登出账号1,但保持在账号1的repo
  2. 默认浏览器登出账号1,登入账号2
  3. GitHub桌面版登入账号2,然后切换到账号2的repo
  4. 在commit那里的头像处左击,选择账号2并确认
  5. commit并push

这样就可以完全分开了。

结语

我也不知道为什么就这么麻烦,虽然还是很迂回,但是现在总算是有了一个解决办法。

全文完。