如何在一台电脑上使用多个git账号

问题描述

在同一台电脑上安装git并且使用SSH生成公钥和私钥。使用此公钥登录Github。如果想再登录一个Github账户或者Gitlab/Gitee账户的话就需要再生成SSH公钥和私钥。因为每个账户的邮箱地址不同,因此生成的私钥也不同。这相当于让一个git使用多个SSH私钥。我估计很多人遇到过类似的问题,常见的场景就是工作中使用了公司gitlab上的账户并且绑定了公钥和私钥,此时再想使用个人的Github账户时就需要使用另外的SSH公钥和私钥。

解决思路

  1. 生成不同的公钥和私钥,并且把新生成的私钥添加到SSH缓冲中;
  2. 在ssh配置文件中依据不同的host来配置不同的私钥;
  3. 修改git的项目配置,主要修改username和email,用来区分不同的提交用户;

总之就是针对不同的账户设置不同的SSH私钥。这是整体的操作思路,接下来分享具体的实现方法;

实现方法

  1. 使用ssh创建key,命令为:ssh-keygen -t rsa -C email_address.创建时输入key名字,不要直接回车,否则会使用默认的名字(id_rsa,id_rsa.pub),这样就和已经有的ssh key(公钥和私钥)重复了;
  2. 添加新创建的ssh key到缓冲中,命令为: ssh-add ./id_rsa_person(这是我自己的私钥名字)
  3. 在"~/.
### 配置不同Git账号提交代码(不使用SSH config) 在不使用SSH配置文件的前提下,可以通过为每个Git账号生成独立的SSH密钥,并在每次提交代码时手动指定SSH密钥来实现多个Git账号的管理。 #### 生成独立SSH密钥 为每个Git账号生成一组独立的SSH密钥。例如,针对GitHubGitLab分别生成不同的密钥: ```bash # 生成GitHub账号的SSH密钥 ssh-keygen -t rsa -C "github@example.com" -f ~/.ssh/id_rsa_github # 生成GitLab账号的SSH密钥 ssh-keygen -t rsa -C "gitlab@example.com" -f ~/.ssh/id_rsa_gitlab ``` 生成密钥后,需要将对应的公钥内容(`.pub`文件)添加到对应平台的SSH密钥管理界面中。 #### 手动指定SSH密钥进行Git操作 每次执行Git操作时,可以通过`GIT_SSH_COMMAND`环境变量指定使用的SSH密钥。例如克隆仓库时可以这样操作: ```bash # 使用GitHub的SSH密钥克隆仓库 GIT_SSH_COMMAND="ssh -i ~/.ssh/id_rsa_github" git clone git@github.com:username/repo.git # 使用GitLab的SSH密钥克隆仓库 GIT_SSH_COMMAND="ssh -i ~/.ssh/id_rsa_gitlab" git clone git@gitlab.com:username/repo.git ``` 提交代码时,同样可以使用该方式指定SSH密钥: ```bash # 提交代码时指定GitHub的SSH密钥 GIT_SSH_COMMAND="ssh -i ~/.ssh/id_rsa_github" git push origin main # 提交代码时指定GitLab的SSH密钥 GIT_SSH_COMMAND="ssh -i ~/.ssh/id_rsa_gitlab" git push origin main ``` 这种方式避免了对`~/.ssh/config`文件的依赖,同时确保了不同账号之间的隔离性[^1]。 #### 配置本地仓库用户信息 每个Git仓库可以配置独立的用户名和邮箱信息,以确保提交记录与对应账号一致: ```bash cd repo_path git config user.name "GitHubUser" git config user.email "github@example.com" ``` 对于另一个仓库: ```bash cd another_repo_path git config user.name "GitLabUser" git config user.email "gitlab@example.com" ``` 通过这种方式,可以确保提交记录与对应的Git账号保持一致,避免混淆。 #### 简化操作方式 为了避免重复输入SSH密钥路径,可以将常用命令封装为别名: ```bash # ~/.bashrc 或 ~/.zshrc 中添加 alias git-github='GIT_SSH_COMMAND="ssh -i ~/.ssh/id_rsa_github" git' alias git-gitlab='GIT_SSH_COMMAND="ssh -i ~/.ssh/id_rsa_gitlab" git' ``` 然后执行: ```bash source ~/.bashrc # 或 source ~/.zshrc ``` 使用时可以直接运行: ```bash git-github clone git@github.com:username/repo.git git-gitlab clone git@gitlab.com:username/repo.git ``` 这样可以在不依赖SSH配置文件的前提下,灵活地管理多个Git账号。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

talk_8

真诚赞赏,手有余香

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值