在 IDEA 中根据项目使用不同的 Git 账户
在 IntelliJ IDEA 中为不同项目配置不同的 Git 账号(如公司账号和个人账号),可以通过 SSH 密钥隔离 + 局部 Git 配置 的组合方案实现,全程无需手动切换全局设置。以下是简洁的操作流程,分步完成。
核心原理:SSH 密钥隔离与局部配置
- SSH 密钥隔离: 为每个 Git 账号生成独立的 SSH 密钥对,并通过 .ssh/config 文件告诉 Git 哪个仓库用哪个密钥。
在 IntelliJ IDEA 中通过 SSH 密钥隔离与局部 Git 配置,实现同一台电脑针对不同项目使用不同 Git 账号进行代码拉取和提交的方法。主要步骤包括生成独立 SSH 密钥、配置 SSH 自动匹配规则、修改仓库远程地址为 SSH 别名、设置项目局部 Git 身份以及验证配置。该方法无需手动切换全局设置,适用于公司和个人账号并存的环境。同时提供了极狐 GitLab 认证 Token 获取及常见错误排查方法。
在 IntelliJ IDEA 中为不同项目配置不同的 Git 账号(如公司账号和个人账号),可以通过 SSH 密钥隔离 + 局部 Git 配置 的组合方案实现,全程无需手动切换全局设置。以下是简洁的操作流程,分步完成。
将公钥添加到 Git 平台: 登录 GitHub/GitLab/Gitee → 账户设置 → SSH Keys → 添加公钥内容。
右键使用文本框打开,复制 .pub 文件内容,将内容放入秘钥/公钥中保存即可。注意:将公司公钥放到公司账号下,个人公钥放到个人账号下。
打开 Git Bash(Windows)或终端(macOS/Linux):
注意: 在生成 SSH Key 时,请务必先进入用户主目录下的 .ssh 文件夹。否则如果你在其他目录下直接执行 ssh-keygen,系统会在当前目录生成 key 文件,导致找不到或者后续配置混乱。
cd ~/.ssh # 直接进入用户主目录的 .ssh 文件夹
执行下方命令,生成公司和个人的密钥:
# 生成公司账号密钥(自定义文件名:id_rsa_work)
ssh-keygen -t rsa -C "公司邮箱" -f ~/.ssh/id_rsa_work
# 生成个人账号密钥(自定义文件名:id_rsa_personal)
ssh-keygen -t rsa -C "个人邮箱" -f ~/.ssh/id_rsa_personal
# 这个邮箱并不是必须的邮箱验证账号,它主要是做为一个标识,一般写邮箱是为了方便分辨,通过邮箱能清楚地知道这个 key 是给哪个账号用的
全程按回车(不设密码),生成后 .ssh 目录会出现:
id_rsa_work(公司私钥) id_rsa_work.pub(公司公钥) id_rsa_personal(公司私钥) id_rsa_personal.pub(个人公钥)
在 .ssh 目录创建 config 文件(无后缀):
echo ""> ~/.ssh/config # 新建文件(Windows 用 Git Bash 执行)
这时候.ssh 下面就有 5 个文件。
编辑 config 文件,添加内容:
# 公司仓库(假设 Git 地址为公司 git 地址 git.example.com)
Host work-git
HostName git.example.com # 实际 Git 服务器域名
User git # 固定为 git
IdentityFile ~/.ssh/id_rsa_work # 关联公司私钥 (没有改第一步的名称就不用动)
IdentitiesOnly yes # 强制使用指定密钥
# 个人仓库(假设 Git 地址为 github.com)
Host personal-git
HostName github.com # 实际 Git 服务器域名
User git # 固定为 git
IdentityFile ~/.ssh/id_rsa_personal # 关联个人私钥 (没有改第一步的名称就不用动)
IdentitiesOnly yes # 强制使用指定密钥
注意: HostName 这个地方地址指的实际 Git 服务器域名。比如拿开源的项目举例:
验证配置是否生效:
# 测试公司仓库连接
ssh -T git@work-git
# 测试个人仓库连接
ssh -T git@personal-git
# work-git 和 personal-git 就是上方 config 文件中 Host 的名称
若输出 You've successfully authenticated…,说明配置正确。
本人是采用 gitee 和 gitlab 分别作为公司和个人的仓库,返回的结果也不一致,如图所示:
用之前配置的 SSH 别名简化仓库操作让 Git 自动匹配对应的密钥(公司 / 个人账号),无需手动指定密钥路径。
将原先的 Git 仓库地址(HTTPS 协议)改为 SSH 别名格式(work-git)
拿 Gitee 上的开源框架举例:原地址为:https://gitee.com/y_project/RuoYi.git 从这个地址中提取两个核心信息(后续改地址要用到):
根据之前的配置,work-git 是公司账号的 SSH 别名,其 SSH 地址格式为:git@work-git:用户名/仓库名.git
将提取的「用户名」和「仓库名」填进去,最终目标地址为:git@work-git:y_project/RuoYi.git
个人项目修改
根据上方样例修改个人项目仓库地址:git@personal-git:个人用户名/仓库名.git
公司项目仓库修改
根据上方样例修改公司项目仓库地址:git@work-git:公司用户名/仓库名.git
执行修改远程地址的命令
在 IDEA 中打开你公司的项目,进入底部 Terminal 终端,按以下步骤操作:
验证是否修改成功:
git remote -v
如果输出变成下面这样,说明修改成功:
# 拿 work-git 举例:
origin git@work-git:用户名/仓库名.git (fetch)
origin git@work-git:用户名/仓库名.git (push)
执行修改命令:
# 在公司/个人项目中 执行 刚刚修改好的 SSH 地址
git remote set-url origin git@work-git:用户名/仓库名.git
git remote set-url origin git@personal-git:用户名/仓库名.git
# 如果在执行语句时,报错:error: No such remote 'origin'
# 是因为当前 Git 仓库中根本没有名为'origin'的远程仓库,所以无法使用 git remote set-url 命令修改它(这个命令是用来修改'已存在'的远程仓库地址的)。
# 需要添加新的远程仓库
git remote add origin origin git@work-git:用户名/仓库名.git
git remote add origin origin git@personal-git:用户名/仓库名.git
# 注意:我是将公司和个人的命令的示例展示出来了,请不要直接复制,需要修改为自己的地址
再次执行命令验证:
git remote -v
输出会类似这样(显示原 HTTPS 地址):
# 当前 hts 地址为示例地址,请按照自己项目地址进行对照
origin https://gitee.com/y_project/RuoYi.git (fetch)
origin https://gitee.com/y_project/RuoYi.git (push)
(origin 是远程仓库的默认名称,不用改)
git config user.name "公司姓名"
git config user.email "公司邮箱@example.com"
git config user.name "个人姓名"
git config user.email "个人邮箱@example.com"
注意: 当前步骤 2、3 设置提交身份,只是定义当前项目的提交作者身份(git 提交记录中的身份信息),完全不影响代码上传的地址。
分别在公司项目和个人项目验证:
git config --list # 查看当前项目配置
当前 git config --list 的输出,如果当前配置内容较多时,Git 会自动用分页器展示。要退出这个查看界面,只需要按键盘上的 q 键(quit 的缩写,意为'退出'),就能回到终端的可输入状态。
打开 IDEA 在菜单栏中找到 Manage Remotes。
当前菜单栏如果没有 Git,那 VCS 也是一样的。
来到下方页面,查看是否是修改好的 SSH 地址。
如果当前地址不是修改好的 SSH 地址,将地址点击删除,然后点击左上角的 + 重新添加。
当前需要输入 Name 和 URL:
Name 最好为默认的 origin
URL 为之前的 SSH 地址,如:git@work-git:y_project/RuoYi.git
点击 ok 后,就配置好了,会出现下方图中存在当前仓库的路径。
到这里,基本配置就完成了,你已经可以根据不同账号来拉取代码、提交代码等操作了。
不过,在我实际操作时,点击 OK 保存配置时会弹出一个新的认证页面(当时也卡了一会),所以记录下来,避免其他同事/同学踩坑。
我当时使用的是 gitlab 的国内版极狐,点击 ok 后会弹出账户认证页面,如下:
如何获取 Token?
如果出现问题:'GraphQL error: [Unexpected end of document]'错误

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online
JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online
使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online
Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online