Git 同时推送 GitHub 和 Gitee

3 篇文章 0 订阅

精排版

闲来无事,想着整理一下 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 目录下

github-ssh-keys

github-new-ssh-key

gitee-new-ssh-key

3. 添加 URL 到本地 Git Repo 或 clone 线上创建的 Repo 到本地

3.1 首次 push 时遇到 Permission denied (publickey)

permission-denied

对于这个问题,有 3 种解决方案:

  1. 使用默认 id_rsa 文件名

    即,在生成 SSH Key 时,使用默认文件名,不使用自定义文件名(👇,直接回车)

  1. 使用 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...
    

    参考:GitHub - Error: Permission denied (publickey)

  2. .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.

fingerprint

直接输入 yes,这会在 .ssh 目录下自动生成一个 known_hosts 文件。

这是因为 SSH 需要验证远端 Host 的真实性,而验证的途径则是通过 SSH key fingerprint ,因此,遇到该情况时有两个选择:

  1. 不关心远程主机的真实性,直接输入 yes
  2. 手动对比验证
    提示输出的密钥指纹:SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8
    GitHub 目前支持的密钥指纹:点👉 GitHub’s SSH key fingerprints

参考:https://stackoverflow.com/a/52583808

4. 分别 push 到 GitHub 和 Gitee 即可成功

git-remote-v

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

参考文章


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>
  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

十甫寸木南

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值