我们使用 Git 的时候可能会选择多个远程仓库托管平台。获取多平台的认证非常重要,不然你可能出现以下几种情况:

  • 无法提交到私人仓库
  • 提交了代码,但是记录的却不是你的账号

本教程给出一个通用的解决方案,虽然没 gitlab 的配置方法,但是可以参考 github 和 gitee 的配置方法。

检查环境

Git 的设置分为三个层级: systemgloballocal。可以通过下面三条命令来检查的设置:

git config --system --list
git config --global --list
git config --local --list

如果你之前跟着网上教程配置过,可能在 global 设置中会有两条:user.nameuser.email。请先删除它们再继续:

git config --global --unset user.name
git config --global --unset user.email

如果你的两个平台使用的邮箱是一样的,完全可以保留。

Github

检查邮箱

进入 github 邮箱设置,配置你使用的邮箱。

生成 ssh keys

cd ~/.ssh
ssh-keygen -t rsa -C "YourGithubEmail@mail.com" -f "github_id_rsa"

~/.ssh/config 中写入以下信息:

# github

Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/github_id_rsa

添加公钥到 github

可以通过命令行查看公钥内容:

cat ~/.ssh/github_id_rsa.pub

复制内容到 github keys设置,新建一个 SSH keys

连接测试

ssh -T git@github.com

Gitee

检查邮箱

进入 gitee 邮箱设置,配置你使用的邮箱。

生成 ssh keys

cd ~/.ssh
ssh-keygen -t rsa -C "YourGithubEmail@mail.com" -f "gitee_id_rsa"

~/.ssh/config 中写入以下信息:

# gitee

Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitee_id_rsa

添加公钥到 gitee

可以通过命令行查看公钥内容:

cat ~/.ssh/gitee_id_rsa.pub

复制内容到 github sshkeys设置,创建一个 SSH keys

连接测试

ssh -T git@gitee.com

实战测试

在 gitee 上创建一个仓库。然后在本地用 git init 创建一个项目。

进入项目,添加配置信息:

git config --local user.name "YourName"
git config --local user.email "YourEmail@email.com"

这里我们使用 local 配置,而不是 global 配置,是为了防止多个邮箱产生冲突,但是每次新建项目都需要添加一遍,像前面说的一样,如果你所有平台的邮箱用的都是同一个,那自然不需要折腾这一步,直接配置一遍 global 就好了。

添加远程仓库:

git remote add origin  https://YourRepositoryLink

添加一个 README.md 测试一下。一些机械操作:

git add -A
git commit -m "add README"

如果你的远程仓库里内容的话,使用 git push origin master 还是会失败的。

两个解决方法:

# 舍弃远程仓库的内容,强制提交
git push origin master -f

# 保留远程仓库的内容
git pull origin master --allow-unrelated-histories
git push origin master