一台电脑同时使用 GitHub 和公司 GitLab
534 字
3 分钟
一台电脑同时使用 GitHub 和公司 GitLab
个人项目在 GitHub,公司项目在 GitLab,两边的账号、邮箱都不一样。要解决两个问题:
- 认证:两边用不同的 SSH 密钥;
- 身份:提交记录里的用户名和邮箱,个人项目用个人的,公司项目用公司的。
一、生成两套 SSH 密钥
现在推荐用 ed25519 算法,比 RSA 更短更安全:
ssh-keygen -t ed25519 -C "个人邮箱" -f ~/.ssh/id_ed25519_githubssh-keygen -t ed25519 -C "公司邮箱" -f ~/.ssh/id_ed25519_gitlab然后把两个 .pub 公钥分别添加到 GitHub 和 GitLab 的个人设置里。
二、用 ~/.ssh/config 按域名选择密钥
# 个人 GitHubHost github.com HostName github.com User git IdentityFile ~/.ssh/id_ed25519_github IdentitiesOnly yes
# 公司 GitLabHost gitlab.example.com HostName gitlab.example.com User git IdentityFile ~/.ssh/id_ed25519_gitlab IdentitiesOnly yesIdentitiesOnly yes 很重要:没有它,SSH 会先把 ssh-agent 里所有的密钥挨个试一遍,可能用错密钥,或者尝试次数过多被服务器断开。
配好后验证:
ssh -T git@github.comssh -T git@gitlab.example.com三、按目录自动切换提交身份
当年的做法是在每个公司仓库里手动执行 git config --local user.name/user.email,很容易忘。Git 2.13 之后可以用 includeIf,按仓库所在目录自动加载不同的配置。
~/.gitconfig:
[user] name = 个人用户名 email = 个人邮箱
# work 目录下的仓库,自动使用公司身份[includeIf "gitdir:~/work/"] path = ~/.gitconfig-work~/.gitconfig-work:
[user] name = 公司用户名 email = 公司邮箱公司的项目都放在 ~/work/ 下面,提交时就会自动用公司身份。在仓库里执行 git config user.email 可以确认当前生效的是哪个。
四、遇到过的问题
当时推送到公司 GitLab 时出现过这个报错:
ssh_exchange_identification: read: Connection reset by peerfatal: Could not read from remote repository.它的意思是 SSH 连接在握手阶段就被服务端断开了,还没轮到验证密钥,所以和密钥配置无关。常见原因是服务端限制了允许 SSH 的来源 IP(比如只放行公司内网或 VPN),或者短时间内连接次数过多被拦截。当时的临时办法是改用 HTTPS 地址推送;根本的解决办法是找管理员确认 SSH 访问策略。
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!
一台电脑同时使用 GitHub 和公司 GitLab
https://tracerzzz.cn/posts/gitlab-and-github/相关文章智能推荐
1
一家多诊室的医院:用类比理解 Go 的 GMP 调度
Go用"医院看病"的类比讲清楚 Go 的 GMP 调度:G、M、P、全局队列、偷任务、抢占、系统调用、netpoller 和 sysmon 各自做什么,顺带回顾用户态和内核态,对比 Python asyncio、Node.js 和 Go 的调度分层,最后用两个小程序亲眼看看调度器在干什么。
2
让 Mac 和 iPhone 指定网站走 eSIM:sing-box 分流实录
工具家里 Wi-Fi 访问一部分境外网站不稳定,iPhone 上的境外 eSIM 访问正常但流量很少。这篇记录怎么让 Mac(通过手机热点)和 iPhone 自己都只把指定网站分给 eSIM,其他流量照常走 Wi-Fi。最后两台设备共用一份 sing-box 配置,用 iCloud 同步,规则全部来自社区规则集,基本不用手动维护。附完整配置、一路补过的漏洞和换设备时的快速清单。
3
给 2016 款 MacBook Pro 装上 macOS Sonoma:OpenCore Legacy Patcher 实录
工具家里有一台 2016 款 15 英寸 MacBook Pro,官方最高只能升到 macOS 12,装不了要求 macOS 13 以上的新软件。用 OpenCore Legacy Patcher 把它升到了 Sonoma 14,这篇记录选版本的考虑、安装步骤,以及装完后遇到的屏幕闪烁、Wi-Fi 消失、指纹失效、iCloud 退不出去、睡眠唤醒死机这些坑。
4
让医生别闲着:用 Python 协程把成本数据产出提速十倍
工作在百度云 CDN 做成本分摊时,日均要对 Palo 发 80 万次以上的查询,大部分时间都花在等结果上。这篇用"医院看病"做类比讲清楚异步非阻塞,顺带对比多进程、多线程、协程三种并发方式,最后讲我先用单进程协程(asyncio + aiomysql)并发查询,再加上多进程、用队列汇总结果,把数据产出时间缩短到原来的十分之一的过程;最后对比浏览器、Node.js 和 Python asyncio 的事件循环调度原理。
5
CDN 新客户接入前的价格测算:用波形拟合算出最低成本价
工作火山 CDN 经营分析平台上的价格测算功能:销售拿到一个新客户的带宽打点,平台把它和大盘拟合,判断客户是否错峰、算出边际超卖倍数,再结合资源诉求的加权成本和包头系数,给出不同计费方式下的最低成本价。这篇讲它的输入、计算过程、示例和后续的优化方向。
随机文章随机推荐




