栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Git 同时推送 GitHub 和 Gitee

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Git 同时推送 GitHub 和 Gitee

精排版

闲来无事,想着整理一下 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/.pub # 生成的 SSH Key 会放在用户目录的 .ssh 目录下

3. 添加 URL 到本地 Git Repo 或 clone 线上创建的 Repo 到本地 3.1 首次 push 时遇到 Permission denied (publickey)

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

  1. 使用默认 id_rsa 文件名

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

  1. 使用 ssh-agent 代理管理私钥

    $ eval "$(ssh-agent -s)" # 后台启动 SSH Agent
    > Agent pid 59566
    
    $ ssh-add ~/.ssh/ # 添加私钥到 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//.ssh/ # id_rsa 的文件路径
    PreferredAuthentications publickey                # 可选,配置登录时用什么权限认证【publickey, password publickey, keyboard-interactive 等】  
    User <用户名>                                      # 可选,配置用户名
    
    # gitee
    Host gitee.com
    HostName gitee.com
    IdentityFile /Users//.ssh/
    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 ,因此,遇到该情况时有两个选择:

  1. 不关心远程主机的真实性,直接输入 yes
  2. 手动对比验证
    提示输出的密钥指纹: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 两次,写个脚本
#!/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.
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/311049.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号