大家好,我是五阳。近期我在开发一个项目,项目同时放在了GitHub 和 Gitee。我希望每次Push代码时,能同时push到两个仓库,如何实现呢?
Gitee开源地址:juejin_wuyang/memberclub
GitHub开源地址: GitHub - juejin-wuyang/memberclub
生成 SSH KEY
目前 GitHub和Gitee都推荐使用 ed25519方式生成公钥私钥。
ssh-keygen -t ed25519 -C "2042854058@qq.com"
你需要在命令行执行此条命令,注意 邮箱部分替换为你的邮箱!
需要说明,Github和Gitee识别 Git配置的邮箱,关联到你Gitee的账号。因此如果你希望Gitee上作者名称是你,那么你需要设置 Git邮箱。参考如下命令
git config --global user.email '2042854058@qq.com'
ssh-keygen 生成公钥私钥以后,需要再 远程仓库上设置 SSH公钥。
登记 SSH 公钥
通过 cat ~/.ssh/id_ed25519.pub 可以获取到公钥。注意GitHub和 Gitee我们使用了相同的公钥,这是没有问题的。
cat ~/.ssh/id_ed25519.pub
拷贝获取到公钥后分别在 Gitee和 Github设置
Gitee登记公钥
GitHub登记公钥
完成以上工作,并不能立即访问通 Github,还需要如下动作,配置ssh config
配置 Host
需要在 ~/.ssh/config 文件中配置如下内容
sudo vim ~/.ssh/config 配置如下内容
#Default gitHub user Self
Host github.com
HostName ssh.github.com
Port 443
User git
#gitee
Host gitee.com
Hostname ssh.gitee.com
Port 443
User git
在网上其他文章中,配置的端口是 ssh端口 22,但我配置后,访问不通,gitee和github并没有开放22端口 (不光github不同,gitee也不通,可能不是强的因素。)。因此需要配置 443 端口。
如何判断是否连通呢?执行如下命令
ssh -T git@github.com
ssh -T git@gitee.com
如果显示如上信息,那么说明已经连通了。接下来,你需要在Git上配置 远程仓库地址
配置远程仓库
首先需要在 Gitee和 Github上 创建好项目,然后获取 SSH 地址。例如
配置 Gitee
获取 Gitee 项目的ssh地址 ,通过如下命令,配置远程仓库,注意 仓库地址换成你自己的
git remote set-url --add origin git@gitee.com:juejinwuyang/memberclub.git
配置 Github
获取 Gitee 项目的ssh地址 ,通过如下命令,配置远程仓库,注意 仓库地址换成你自己的
git remote set-url --add origin git@github.com:juejin-wuyang/memberclub.git
测试push 代码
提交一段代码后,通过 git push 可以将代码提交到两个远端仓库。效果如下
我的开源项目
最后夹带一点私货,五阳最近花了3个月的时间完成一个开源项目。
开源3周以来,已有近 200 多个关注和Fork
Gitee:gitee.com/juejinwuyan…
GitHub github.com/juejin-wuya…
开源平台上有很多在线商城系统,功能很全,很完善,关注者众多,然而实际业务场景非常复杂和多样化,开源的在线商城系统很难完全匹配实际业务,广泛的痛点是
- 功能堆砌,大部分功能用不上,需要大量裁剪;
- 逻辑差异点较多,需要大量修改;
- 功能之间耦合,难以独立替换某个功能。
由于技术中间件功能诉求较为一致,使用者无需过多定制化,技术中间件开源项目以上的痛点不明显,然而电商交易等业务系统虽然通用性较多,但各行业各产品的业务差异化极大,所以导致以上痛点比较明显
所以我在思考,有没有一个开源系统,能提供电商交易的基础能力,能让开发者搭积木的方式,快速搭建一个完全契合自己业务的新系统呢?
- 他们可以通过编排和配置选择自己需要的功能,而无需在一个现成的开源系统上进行裁剪
- 他们可以轻松的新增扩展业务的差异化逻辑,不需要阅读然后修改原有的系统代码!
- 他们可以轻松的替换掉他们认为垃圾的、多余的系统组件,而不需要考虑其他功能是否会收到影响
开发者们,可以择需选择需要的能力组件,组件中差异化的部分有插件扩展点能轻松扩展。或者能支持开发者快速的重新写一个完全适合自己的新组件然后编排注册到系统中?
memberclub 就是基于这样的想法而设计的。 它的定位是电商类交易系统工具箱, 以SDK方式对外提供通用的交易能力,能让开发者像搭积木方式,从0到1,快速构建一个新的电商交易系统!
具体介绍可参见
Gitee开源地址:gitee.com/juejinwuyan…
GitHub开源地址 : github.com/juejin-wuya…
在这个项目中你可以学习到 SpringBoot 集成 以下框架或组件。
- Mybatis、Mybatis-plus 集成多数据源
- Sharding-jdbc 多数据源分库分表
- redis/redisson 缓存
- Apollo 分布式配置中心
- Spring Cloud 微服务全家桶
- RabbitMq 消息队列
- H2 内存数据库
- Swagger + Lombok + MapStruct
同时你也可以学习到以下组件的实现原理
- 流程引擎的实现原理
- 扩展点引擎实现原理
- 分布式重试组件实现原理
- 通用日志组件实现原理 参考:juejin.cn/post/740727…
- 商品库存实现原理: 参考:juejin.cn/post/731377…
- 分布式锁组件: 参考:
- Redis Lua的使用
- Spring 上下文工具类 参考: juejin.cn/post/746927…