同时使用 GitHub 和 GitLab

1、出现 git 提交被拒的问题

        先说一下写这篇博客的缘由,之前自己开发项目的时候都是用 gitHub 来托管代码,但是实习之后由于公司项目隐私问题,给分配了 GitLab 的用户名和邮箱,当时我就直接在电脑上把用户名和密码进行了全局配置,自那以后我在实习之余做自己的项目时,每次往 gitHub 上提交代码都没有我的 contributions 记录(不会出现那个小绿点了),当时我以为网卡没在意。

        今天春节在家远程办公的时候,突然出现 GitLab 提交代码被拒的问题:Push to origin/master was rejected,可能是新建了个项目并提交代码到 gitHub 上时让输入 gitHub 的用户名和密码的缘故。这一问题不仅影响我远程工作进度,甚至困扰我几个晚上,百思不得其解。

        有时候就是会突然的灵光一闪,想到了 git 用户名和邮箱的问题,上网查了一下,我之所以代码代码提交被拒是因为,我用了 GitHub 的用户名和邮箱去提交 GitLab 的代码,当然会出问题!所以需要重新配置之一下。

2、同时使用 GitHub 和 GitLab

        由于公司团队使用 GitLab 来托管代码,而个人的一些代码仓库寄存在 Github 上,由于公司邮箱与个人邮箱是不同的,即使使用同一套 SSH 公钥能保证代码正常提交,但不可避免的会造成了提交不匹配的问题 ,如何在一台机器上面同时使用 Github 与 Gitlab 的服务?

        简单来说,你可以配置一个全局的用户名和邮箱,自己的多个项目上传 github 的时候都会验证这个全局的用户名和邮箱。公司的项目配置一个本地的用户名和邮箱,这样上传代码到 gitlab 的时候就会验证你本地用户名和邮箱,就不用来回切换用户名和邮箱了。

git config --list查看 git 配置信息git config --global --list查看 git 全局配置信息
git log

查看 commit 历史(会显示提交的用户名和邮箱)

git config user.name查看 git 用户名git config user.email查看 git 用户邮箱
git config --global user.name "name"全局配置 git 用户名
git config --global user.email "email.com"全局配置 git 用户邮箱
git config --local user.name "name"本地配置 git 用户名
git config --local user.email "email.com"本地配置 git 用户邮箱
在配置本地用户名和邮箱时需要注意配置本地用户名和邮箱,需到项目下输入 git 配置命令

3、Git 配置多个 SSH-Key

        上面的解决方案是用一套 SSH,也就是说你上传 github 和 gitlab 的 SSH 公钥匙一摸一样的,那如何创建多个 SSH  key 呢?

  • 生成各自需要用的 SSH-Key
# 生成一个 GitLab 用的 SSH-Key
$ ssh-keygen -t rsa -C 'xxx@company.com' -f ~/.ssh/gitlab-rsa
# 生成一个 GitHub 用的 SSH-Key
$ ssh-keygen -t rsa -C 'xxx@qq.com' -f ~/.ssh/github-rsa
  • 在 ~/.ssh 目录下新建一个 config 文件,添加如下内容
# Host 和 HostName 填写git服务器的域名
# IdentityFile 指定私钥的路径

# gitlab
Host gitlab.com
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab-rsa

# github
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/github-rsa
  • 用 ssh 命令分别测试
$ ssh -T git@gitlab.com
$ ssh -T git@github.com

# 成功的话会返回如下内容
# Hi xxx! You've successfully authenticated...
  • 遇到无法连接的问题?
# 如果连接不成功的话,用户命令查看错误信息
$ ssh -vT git@gihub.com  # 查看出错信息

# 我遇到的问题如下,好像是关于 RSA SHA-1 算法过时
# debug1: send_pubkey_test: no mutual signature algorithm
# debug1: No more authentication methods to try.


# 解决方案:需要在 config 中添加以下内容
PubkeyAcceptedKeyTypes +ssh-rsa
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值