闲来无事,想着整理一下 GitHub,又突然想起了19年7月 GitHub 按照国籍对账号进行限制的事,于是寻思着在 Gitee 上也搞一份。 声明:虽然网上已经有一堆了,但是作为菜鸟,还是记录下来比较好,不喜勿喷! |
准备一个 GitHub 账号和 Gitee 账号 |
1. 生成 SSH Key
ssh-keygen -t rsa -C "your_email@example.com" # -C 添加备注
# 或 👇
ssh-keygen # 默认不添加备注
参考:ssh-keygen
2. 添加 SSH Key 公钥到 GitHub 和 Gitee 上
复制公钥到剪切板(Mac):👇
pbcopy < ~/.ssh/<id_rsa文件名>.pub # 生成的 SSH Key 会放在用户目录的 .ssh 目录下
3. 添加 URL 到本地 Git Repo 或 clone 线上创建的 Repo 到本地
3.1 首次 push 时遇到 Permission denied (publickey)
对于这个问题,有 3 种解决方案:
-
使用默认 id_rsa 文件名
即,在生成 SSH Key 时,使用默认文件名,不使用自定义文件名(👇,直接回车)
![](https://i-blog.csdnimg.cn/blog_migrate/f9c38cab046f401452cbd9472bec0b41.png)
-
使用 ssh-agent 代理管理私钥
$ eval "$(ssh-agent -s)" # 后台启动 SSH Agent > Agent pid 59566 $ ssh-add ~/.ssh/<id_rsa文件名> # 添加私钥到 SSH Agent,注意:[ssh-add -l -E sha256](https://askubuntu.com/a/363550)[ 只会添加默认文件名的私钥 ](https://askubuntu.com/a/363550) > 2048 SHA256:274ffWxgaxq/tSINAykStUL7XWyRNcRTlcST1Ei7gBQ /Users/username/.ssh/id_rsa (RSA) $ ssh -T git@github.com # 验证是否能连接到 GitHub > Hi username! You've successfully authenticated...
-
在
.ssh
目录下创建config
文本文件并进行相关配置# github Host github.com # Host 别名 HostName github.com # 真实的域名地址 IdentityFile /Users/<username>/.ssh/<id_rsa文件名> # id_rsa 的文件路径 PreferredAuthentications publickey # 可选,配置登录时用什么权限认证【publickey, password publickey, keyboard-interactive 等】 User <用户名> # 可选,配置用户名 # gitee Host gitee.com HostName gitee.com IdentityFile /Users/<username>/.ssh/<id_rsa文件名> PreferredAuthentications publickey User <用户名>
3.2 The authenticity of host ‘github.com (20.205.243.166)’ can’t be established.
直接输入 yes
,这会在 .ssh
目录下自动生成一个 known_hosts
文件。
这是因为 SSH 需要验证远端 Host 的真实性,而验证的途径则是通过 SSH key fingerprint ,因此,遇到该情况时有两个选择:
- 不关心远程主机的真实性,直接输入
yes
- 手动对比验证
提示输出的密钥指纹:SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8
GitHub 目前支持的密钥指纹:点👉 GitHub’s SSH key fingerprints
参考:https://stackoverflow.com/a/52583808
4. 分别 push 到 GitHub 和 Gitee 即可成功
git push github main
git push gitee main
5. 为了避免以后每次提交都 push 两次,写个脚本(废弃,参考2021.10.13 更新)
#!/bin/bash -eu
BRANCH=$1
echo 'Pushing to Gitee......'
git push gitee "${BRANCH}"
echo 'Pushing to Github......'
git push github "${BRANCH}"
将脚本拷贝到 /usr/local/bin
下:cp ./mypush /usr/local/bin/mypush
现在,可以直接使用脚本一次性 push 到 GitHub 和 Gitee 了👇。
mypush main
点击下载脚本 👉 mypush
参考文章
- 代码同时推送到 GitHub 和 Gitee
- git@github.com: Permission denied (publickey)
- git—如何解决The authenticity of host ‘github.com (192.30.255.112)’ can’t be established.
2021.10.13 更新 push 脚本
- 脚本介绍 👈
- 脚本安装:👇
curl -LJO https://raw.githubusercontent.com/SFCMN/qier/main/scripts/qgit/qgit && chmod +x ./qgit && mv ./qgit /usr/local/bin/qgit
- 脚本内容(v2.1.0):👈
2021.10.18 更新脚本
- 脚本: 支持
<remote-name>/<branch>