我们使用 Git 的时候可能会选择多个远程仓库托管平台。获取多平台的认证非常重要,不然你可能出现以下几种情况:
- 无法提交到私人仓库
- 提交了代码,但是记录的却不是你的账号
本教程给出一个通用的解决方案,虽然没 gitlab 的配置方法,但是可以参考 github 和 gitee 的配置方法。
检查环境
Git 的设置分为三个层级: system
、global
、local
。可以通过下面三条命令来检查的设置:
git config --system --list
git config --global --list
git config --local --list
如果你之前跟着网上教程配置过,可能在 global 设置中会有两条:user.name
、user.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