前言
我有两个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 out
、log off
、sign out
、switch 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,这次就对了了。
为了避免不必要的麻烦,我推荐的操作步骤是这样:
- GitHub桌面版登出账号1,但保持在账号1的repo
- 默认浏览器登出账号1,登入账号2
- GitHub桌面版登入账号2,然后切换到账号2的repo
- 在commit那里的头像处左击,选择账号2并确认
- commit并push
这样就可以完全分开了。
结语
我也不知道为什么就这么麻烦,虽然还是很迂回,但是现在总算是有了一个解决办法。
全文完。