Git 如何配置多个远程仓库和免密登录?

通用后台管理系统 代号:虎鲸

缘由

每次开发后台界面都会有很多相同模块,尝试抽离出公共模块作为快速开发的基座。

目标:实现后台管理系统常用功能模块,基于此项目快速拓展其他产品

原则:简洁-清晰-强大好用

寓意

代号:虎鲸 (像鲸一样承载)

名称:winsax

寓意:wins(双赢)+ a(领先)+ x (拓展)


代码仓库:

github: 国外仓库

gitee(同步更新): 国内仓库

欢迎各位大佬贡献代码~ dev / feature 分支

技术方案

后端 Golang / Rust / Node 提供 restful api 接口

前端 Next.js / 或者后端模板引擎渲染

TodoList

  1. 当前项目只实现 后台管理界面
  2. 后续实现标准API接口

解决问题(如题)

本着解决问题,积累经验的原则

愿景很好,如何实现?

问题一

github 访问不稳定,那么如何实现git仓库配置多个仓库并实现代码同步更新托管?

调研发现有两种方式实现:(本文选择的第二种)

第一种:添加多个远程地址,给不同别名,多条命令,分别更新 ⌛️

第二种:添加多个远程地址,一条命令同步更新 👍

方式一

第一步:首先在不同平台(github / gitee / coding)新建仓库地址

github: 国外仓库

gitee(同步更新): 国内仓库

coding (待实现) : 例如 e.coding.net/winyh/winsa...

第二步:分别添加远程地址

csharp 复制代码
git remote add origin https://github.com/winyh/winsax.git
git remote add gitee https://gitee.com/winyh/winsax.git 
git remote add coding https://xxxxx.git 

第三步:执行提交(当前分支 main)

git push <remote_name> <branch_name>

perl 复制代码
git add .
git commit -m 'feat:多仓库地址测试'

git push -u gitee main

或者

git push origin main (输入账号/密码 推送到 github 仓库)
git push gitee main  (输入账号/密码 推送到 gitee 仓库)
git push coding main (输入账号/密码 推送到 coding 仓库)

tips:本地仓库 .git/config 文件可查看配置

相关命令

arduino 复制代码
git remote -v 查看远程仓库地址 (会显示3个远程地址)
git remote remove origin(移除远程仓库)
方式二(推荐)

第一步:删除 gitee 和 coding 别名仓库地址

arduino 复制代码
git remote remove gitee (远程仓库别名)
git remote remove coding (远程仓库别名)

第二步:查看远程仓库地址并添加其他仓库

git remote set-url --add origin <origin_url>

csharp 复制代码
git remote -v 查看远程仓库地址 (会显示1个远程地址)
git remote set-url --add origin https://gitee.com/winyh/winsax.git (gitee平台)
git remote set-url --add origin https://xxxxx.git (coding平台)

第三步:执行提交(当前分支 main)

sql 复制代码
git add .
git commit -m 'feat:多仓库快速提交'
git push 
或者
git push origin -all
问题二

在推送代码时需要输入多次不同平台的密码~ 重复动作或者代码就可以考虑抽象 / 提效了

解决办法:配置SSH公钥,部署到不同的代码托管平台,实现免密登录

SSH 的全称为 Secure Shell 即安全外壳协议,是一种加密的网络传输协议。它能够在公开的网络环境中提供安全的数据传输环境,通常用于登录远程主机与推拉代码。

生成公钥(本文为 mac 环境)

添加本地全局配置(--global / --local / --system)

javascript 复制代码
git config --global user.name "winyh" 
git config --global user.email "your-email@qq.com"

ssh-keygen -t rsa -C "your-email@qq.com" (基于邮箱生成公钥)

cat  ~/.ssh/id_rsa.pub (查看公钥串)

生成公钥时,中间会有一个询问过程,全部敲enter键,一般是有3次(询问密钥存放地址 / 输入 / 确认密码)

密码可以考虑给空值, 输入/确认都按 enter 就行

生成公共后会显示密钥存放地址

将公钥串部署添加到不同平台(github / gitee / coding)的 SSH key 配置中(参考coding平台

id_rsa(私钥),id_rsa.pub(公钥)

校验连通性

在本地运行首次连接时的公钥认证命令:

java 复制代码
ssh -T git@github.com (github平台)
ssh -T git@gitee.com (gitee平台)
ssh -T git@e.coding.net (coding平台)

ssh-keygen -R xxx.xxx.xxx.xxx` 命令可以删除 known_hosts 文件中这个主机的旧公钥

一般提示如下:

github 平台

gitee 和 coding 平台

这样使用命令 git pull/push 就不用输入密码了,这是因为刚才在生成公钥时,没有输入密码,所以当你选择SSH地址传输时,就可免密码使用命令 git pull/push

至此解决了两个问题:

1.如何实现git仓库配置多个仓库并实现代码同步更新托管? 2.如何实现多仓库平台免密pull / push ?

本文完

相关推荐
秦jh_8 分钟前
【Linux】多线程(概念,控制)
linux·运维·前端
蜗牛快跑21321 分钟前
面向对象编程 vs 函数式编程
前端·函数式编程·面向对象编程
Dread_lxy22 分钟前
vue 依赖注入(Provide、Inject )和混入(mixins)
前端·javascript·vue.js
唔知小罗43 分钟前
git config是做什么的?
git
SafePloy安策1 小时前
ES信息防泄漏:策略与实践
大数据·elasticsearch·开源
涔溪1 小时前
Ecmascript(ES)标准
前端·elasticsearch·ecmascript
榴莲千丞1 小时前
第8章利用CSS制作导航菜单
前端·css
奔跑草-1 小时前
【前端】深入浅出 - TypeScript 的详细讲解
前端·javascript·react.js·typescript
学编程的小程1 小时前
【安全通信】告别信息泄露:搭建你的开源视频聊天系统briefing
安全·开源·音视频
羡与2 小时前
echarts-gl 3D柱状图配置
前端·javascript·echarts