同一台电脑 → 公司内部 GitLab(账号A) + 个人 GitHub(账号B)
提交、push 绝对不混、不串、不报错。
终极方案:按目录自动切换 Git 账号(一劳永逸)
原理
你把项目分成两个大文件夹:
~/work/ # 放公司 GitLab 项目(账号A)
~/personal/ # 放个人 GitHub 项目(账号B)
然后让 Git 自动根据目录切换用户名/邮箱/密钥。
一步一步照做(100% 不串号)
1. 先建两个目录(必须)
bash
mkdir -p ~/work
mkdir -p ~/personal
2. 编辑 ~/.gitconfig(全局配置)
bash
nano ~/.gitconfig
写入下面内容 直接复制:
gitconfig
[includeIf "gitdir:~/work/"]
path = ~/.gitconfig-work
[includeIf "gitdir:~/personal/"]
path = ~/.gitconfig-personal
保存退出:Ctrl+O → 回车 → Ctrl+X
3. 创建公司配置
bash
nano ~/.gitconfig-work
写入:
gitconfig
[user]
name = 你的公司名字
email = 你的公司邮箱A@xxx.com
[core]
autocrlf = input
4. 创建个人配置
bash
nano ~/.gitconfig-personal
写入:
gitconfig
[user]
name = 你的GitHub名字
email = 你的GitHub邮箱B@xxx.com
[core]
autocrlf = input
5. 以后所有项目必须这样放
✅ 公司 GitLab 项目 → 放在
~/work/项目1
~/work/项目2
✅ 个人 GitHub 项目 → 放在
~/personal/我的博客
~/personal/我的工具
6. 测试是否生效(非常重要)
进入公司目录:
bash
cd ~/work
git config user.email
应该显示 公司邮箱
进入个人目录:
bash
cd ~/personal
git config user.email
应该显示 个人邮箱
只要目录放对 → 永远不会串号!
如果你还需要不同的 SSH 密钥(公司/个人分开)
我也给你最稳配置:
1. 生成两个密钥
bash
# 公司密钥
ssh-keygen -t ed25519 -C "公司邮箱" -f ~/.ssh/id_work
# 个人密钥
ssh-keygen -t ed25519 -C "个人邮箱" -f ~/.ssh/id_personal
2. 编辑 ~/.ssh/config
bash
nano ~/.ssh/config
写入:
ssh
Host gitlab.你的公司域名.com
User git
IdentityFile ~/.ssh/id_work
Host github.com
User git
IdentityFile ~/.ssh/id_personal
最终效果(你以后完全不用管账号)
- 进
~/work→ 自动用公司账号 - 进
~/personal→ 自动用个人账号 - 提交、clone、push 全部自动匹配
- 永远不会串号
总结
- 按目录隔离:work / personal
- 自动切换账号:includeIf 配置
- 自动切换密钥:ssh config 配置
这是 多账号 Git 最标准、最安全、最通用 的方案。