GitHub Desktop如何隔离管理多账户
GitHub多账户多仓库管理
GitHub作为全球最大的代码托管平台,其核心基于Git版本控制系统,同时结合了社交网络和协作功能,汇聚着至少过亿的开发者。几乎是每个但凡懂一点网络技术或者对互联网感兴趣的人必备的工具之一,甚至被戏称为“全球最大的同性交友网站”,GitHub的水之深和趣味性、可玩性可见一斑。
然而在日常使用的过程中,由于一些这样或那样的原因,我们时常会用到多账号的情况。虽然我们可以通过一个个人账号然后建立多个组织账号也能起到一定的预期作用,但是有的风险和隐私问题还是不能完全规避,只能用多账号多仓库来处理了。GitHub官方的使用条款里是明确限制一个多户的,特别是账号滥用的情况。虽然我们是正常使用,但是为了减少不必要的麻烦,使用起来省心省力,思考如何有效的对多账号多仓库进行管理是必要的。
作为一个细节控,我挑选本地的Git管理软件的时候测试了诸如Fork、Sourcetree、GitHub Desktop等较为知名的软件各自一段时间。发现虽然各有优劣,但是使用习惯了GHD(GitHub Desktop)后,其他软件虽然功能上都能满足自己,但心理总觉得不够给力,主要是稳定性、界面简洁清爽友好等方面。甚至为了使用GHD我一度把所有的仓库都搬到了GitLab,因为GHD只能登录一个GitHub账号,如果通过协作者方式管理又担心被风控。
此前也没有好好思考了解如何隔离管理多GitHub账号,知道最近越来越多的边缘数据处理平台(Edge类服务)开始要接入代码管理,很多早期的平台默认都只支持GitHub,类似于GitLab、Gitee等这些都还不支持接入。为了长远计,在坚持使用GHD的前提下还是把仓库迁回GitHub了。把我GitHub Desktop隔离管理多账户的操作记录分享一下,我用的是Mac电脑,Windows基本也没什么区别。
通过用SSH Key实现管理GitHub多账号多仓库
一、为每个GitHub账号生成一把独立的SSH Key
直接在终端输入下面的命令为GitHub账号1生成独立的SSH Key,命令里的邮箱填GitHub的邮箱。
ssh-keygen -t ed25519 -C "personal@email.com"
提示“Enter file in which to save the key:”的时候输入选择保存的位置和Key的名称,注意替换“you”和“personal”内容为自己对应的内容:
/Users/you/.ssh/github/personal
然后可以一路回车,是否设密码看自己的习惯,一般而言没必要设置了。
相同的操作为其他GitHub账号生成SSH Key。
二、把SSH Key加入ssh-agent(macOS 必做)
直接在刚刚的终端继续输入:
eval "$(ssh-agent -s)"
回车后继续输入,“personal”部分替换成上面自己生成的对应的SSH Key名称:
ssh-add ~/.ssh/github/personal
ssh-add ~/.ssh/github/personal2
回车后继续输入下面的命令确认:
ssh-add -l
三、配置 ~/.ssh/config
刚刚的终端里继续输入命令编辑ssh config
nano ~/.ssh/config
可写入下面的内容,“Host”修改成自己想要的名称,第五步验证的时候会要用到,“IdentityFile”修改成上面多次提到的自己SSH Key文件的位置即可:
# GitHub - Personal1
Host github-personal1
HostName github.com
User git
IdentityFile ~/.ssh/github/personal
IdentitiesOnly yes
# GitHub - Personal2
Host github-Personal2
HostName github.com
User git
IdentityFile ~/.ssh/github/personal2
IdentitiesOnly yes
保存退出。
四、把公钥分别加到对应的GitHub账号
打开文件夹~/.ssh/github/,找到里面对应的.pub结尾的公钥,双击打开复制里面的全部内容,粘贴到github.com对应账号里,具体粘贴的位置:
Settings → SSH and GPG keys → New SSH key
类型选择Authentication,粘贴保存即可。
五、验证
终端输入,“github-personal1”对应第三步ssh config里Host的内容:
ssh -T git@github-personal1
如果看到类似于“Hi username! You’ve successfully authenticated.”的内容,那代表添加匹配成功了。
然后用相同的操作验证其他账号。
六、Clone/管理不同账号的仓库
终端继续输入下面命令,其中“github-personal1”依然对应ssh config里Host的内容,“User1”对应的GitHub账号,“repo”也就是你的仓库了,下面那一行就是你想把仓库克隆到的本地位置了,记得视自己具体情况修改:
git clone git@github-personal1:User1/repo.git \
/Users/you/Documents/github/repo
最后在GitHub Desktop里通过File → Add Local Repository,添加这个仓库进行管理就行了。
至此基本就完成了GitHub Desktop本地隔离管理多账户多仓库了,任何问题欢迎联系交流。👨🏻💻
每粒玉米都是梦想的开始!