Git 一个本地仓库同时推送到两个远程仓库(详细教程)

Git 一个本地仓库同时推送到两个远程仓库(详细教程)


一. 引言

我们在实际工作中经常会涉及项目备份问题,尽管公司都有自己的仓库,但是呢很多情况下我们都还需要另外一个仓库。
一方面公司仓库通常需要公司内网或者链接VPN,有时候临时要用可能并不方便。

另一方面可能自己也希望备份一份,或者是一个仓库的成员不够用。

本篇博客会通过完整的实战步骤,来介绍如何实现Git双远程仓库同步。

二. 查看当前的远程仓库

执行命令:

git remote -v

通常来讲输入如下:

origin https://***@bitbucket.org/louis_private_project/ignoremodules.git (fetch) origin https://***@bitbucket.org/louis_private_project/ignoremodules.git (push) 

这就表示现在只绑定了一个远程仓库。

它的含义是:

  • 拉取代码(fetch/pull)
  • 推送代码(push)

Git 把拉取和推送地址分开显示了,默认情况下,pull 和 push 用的是同一个远程仓库。

三. 添加第二个远程仓库(以 Gitee 为例)

我们就以Gitee仓库作为第二个远程仓库为例进行说。

3.1 命名规范说明

当前项目我们已经绑定了bitbucket,并且默认remote名称为:origin。

那么我们在添加第二个远程仓库时,一定要注意名字不能重复,那就不能再叫origin了,建议起一个有意义的名字,常见的命名方式:

gitee origin_gitee backup mirror

例如:

主仓库:origin(bitbucket)

镜像仓库:gitee(gitee)

这样后续操作时更清晰,也不容搞混。

3.2 提前准备远程仓库

在本地添加 remote 之前,需要先在 Gitee 平台上:手动创建一个空仓库。

创建完成之后,会有相关提示告诉我们如何链接远程仓库,但是我们是第二个远程仓库,因此别着急按它的提示去操作。

创建完成后,会得到一个仓库地址,例如:

https://gitee.com/***/ignore-modules.git

3.3 添加第二个远程仓库

远程仓库创建完成后,就可以在本地进行绑定。

我们就按照已有仓库的提示来操作,但是记得修改远程分支名称为“gitee”而不是“origin”:

git remote add gitee https://gitee.com/***/ignore-modules.git

命令格式说明:

git remote add <remote名称> <仓库地址>

在本例中:

  • remote名称:gitee
  • 仓库地址:https://gitee.com/***/ignore-modules.git

这就相当于给当前项目新增了一个名为gitee的远程仓库。

3.4 查看绑定结果

这次我们再来查看当前项目的远程仓库地址:

git remote -v

这次可以看见有四条输出:

gitee https://gitee.com/***/ignore-modules.git (fetch) gitee https://gitee.com/***/ignore-modules.git (push) origin https://***@bitbucket.org/louis_private_project/ignoremodules.git (fetch) origin https://***@bitbucket.org/louis_private_project/ignoremodules.git (push)

这就说明当前项目已经绑定了两个远程仓库:

  • origin -> Bitbucket
  • gitee -> Gitee

拉取和推送都可以正常使用,至此,第二个远程仓库添加完成。

四. 推送与拉取:如何使用多个远程仓库

我们已经成功为本地仓库绑定了两个远程仓库:

gitee https://gitee.com/***/ignore-modules.git (fetch) gitee https://gitee.com/***/ignore-modules.git (push) origin https://***@bitbucket.org/louis_private_project/ignoremodules.git (fetch) origin https://***@bitbucket.org/louis_private_project/ignoremodules.git (push)

当前项目已经同时关联了 Gitee 和 Bitbucket 两个远程仓库。

接下来要解决的问题就是:如何在多个远程仓库之间进行推送和拉取?

4.1 指定远程仓库进行推送

当项目存在多个 remote 时,Git 不会自动帮你选择目标仓库。

此时推送需要显式指定远程名称。

基本格式:

git push <remote名> <分支名>

例如:

推送到 Bitbucket(origin):

git push origin main

推送到 Gitee:

git push gitee main

这样可以做到:按需选择同步目标仓库,适合偶尔同步、手动控制场景。

4.2 同时推送到多个远程仓库(推荐)

如果你希望:一次 push,同步多个仓库,可以给同一个 remote 绑定多个 push 地址。

4.2.1 给 origin 添加多个 push 地址

例如,将 Gitee 也绑定到 origin:

git remote set-url --add origin https://gitee.com/***/ignore-modules.git

执行后查看:

git remote -v

结果类似:

origin https://***@bitbucket.org/... (fetch) origin https://***@bitbucket.org/... (push) origin https://gitee.com/***/... (push)

说明:

  • fetch:仍然从 Bitbucket 拉取
  • push:同时推送 Bitbucket + Gitee

4.2.2 使用方式

之后只需执行:

git push origin main

即可自动同步两个仓库。

非常适合做: 镜像仓库,自动备份。

五. 结语:合理使用多远程仓库,让项目管理更高效

通过前面的介绍,我们已经完整实践了:

  • 如何为本地仓库添加多个远程仓库
  • 如何指定不同仓库进行推送
  • 如何实现一次命令同步多个平台

可以看到,Git 本身已经为多仓库场景提供了非常成熟、灵活的支持机制。

关键在于:是否合理使用。

使用建议(经验总结)

结合实际项目经验,这里给出几种常见场景下的推荐方案,供参考。

5.1. 个人项目 / 开源项目

适合人群:个人开发者、开源作者

推荐方式:

主仓库 + 镜像仓库 配置多个 push 地址

特点:

  • GitHub 作为主仓库
  • Gitee 作为国内镜像
  • 一次 push,多端同步

优点:

  •  省心、省事、自动备份。

5.2. 公司项目 + 个人备份

适合人群:企业开发者

推荐方式:

origin:公司仓库 gitee:个人备份仓库 分别维护

特点:

  • 公司仓库作为唯一主仓
  • 个人仓库仅做备份
  • 不影响团队协作流程

优点:

  • 安全、合规、风险可控。

5.3. 重要项目 / 长期维护项目

适合人群:核心业务项目、长期项目

推荐方式:

主仓 + 备份仓 + 镜像仓 多端同步

特点:

  • 至少两个平台备份
  • 防误删、防权限回收
  • 防平台风险

优点:

  • 极高安全性,降低不可控风险。

 5.4. 拉取单一来源,推送多端同步(推荐 )

适合大多数项目的通用方案:

fetch:主仓库 push:主仓 + 镜像仓

特点:

  • 统一代码来源
  • 自动多端同步
  • 避免分支混乱

这是实际工作中最常用、最稳妥的一种配置方式。

写在最后

很多 Git 的高级用法,其实并不复杂,只是平时很少有人系统整理。

希望这篇文章,能帮你真正理解:

Git 多远程仓库不是技巧,而是一种工程习惯。

如果你觉得本文对你有帮助,欢迎点赞、收藏、关注。

Read more

喧嚣之外的低调前行:客观审视开源平台BuildingAI

喧嚣之外的低调前行:客观审视开源平台BuildingAI

在人工智能技术狂飙突进的这几年,我们见证了太多的神话与崩塌。就在不久前,估值曾高达15亿美元的AI独角兽Builder.ai因“技术造假”和“财务欺诈”而轰然倒下,留给业界一片唏嘘 。这家号称“让开发App像点披萨一样简单”的公司,最终被揭露其“人工智能”背后实际上是数百名印度程序员的人工代码,上演了一场现实版的“皇帝的新衣” 。 在Builder.ai这类“伪AI”玩家破产的喧嚣之外,另一个名字相似但路径迥异的角色——BuildingAI,正在开源社区悄然生长。与前者依靠资本讲故事、靠外包凑代码的模式不同,BuildingAI走的是一条务实、透明的技术路线。本文试图剥离开市场的噪音,以客观理性的态度,重新审视这个被称为“AI时代的WordPress”的开源项目。 一、 截然不同的起点:开源与透明 首先要厘清的是,此“BuildingAI”非彼“Builder.ai”。虽然中文含义相近,但两者的底层逻辑完全不同。 Builder.ai(曾用名Engineer.ai)的本质是一家封闭的、

By Ne0inhk
安装openclaw时出现npm error code 128和npm error An unknown git error occurred报错的解决方案

安装openclaw时出现npm error code 128和npm error An unknown git error occurred报错的解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为ZEEKLOG博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的知识进行总结与归纳,不仅形成深入且独到的理解,而且能够帮助新手快速入门。 本文主要介绍了安装openclaw时出现npm error code 128和npm error An unknown git error occurred报错的解决方案,希望能对使用openclaw的同学们有所帮助。 文章目录 * 1. 问题描述 * 2. 解决方案 1. 问题描述 今天在使用命令安装openclaw时,却出现了npm error code 128和npm error An unknown git error occurred的错误提示,具体报错信息如下图所示: 在经过了亲身的实践后,终于找到了解决问题的方案,最终将逐步的操作过程总结如下。希望能对遇到同样bug的同学们有所帮助。

By Ne0inhk
开源EtherCAT主站SOEM入门使用

开源EtherCAT主站SOEM入门使用

文章目录 * 目的 * 上手体验 * 基础使用 * 资料和例程 * 总结 目的 去年工作上用到了EtherCAT,EtherCAT同学是分主从的,作为学习测试来说主站最常用的是TwinCAT。不过TwinCAT支持的网卡信号有限,又没法应用到各种平台上。所以实际使用时又找了一些主站方案,适应性最广的就是SOEM库(Simple Open EtherCAT Master Library)。 项目地址:https://github.com/OpenEtherCATsociety/SOEM 文档地址:https://docs.rt-labs.com/soem/ SOEM库目前主要分为1.4.0版本和2.0.0版本,前者仓库中自带文档,后者文档需要去RT-Labs官网看(需要注册账号),本文将使用2.0.0版本: 本文测试时EtherCAT从站使用了LAN9252和AX58100,找那种支持DIO独立工作的板子: 这两个从站芯片都支持不依赖外部的控制器独立工作在DIO模式下。LAN9252支持总共16通道DIO,AX58100支持总共32路DIO。 上手

By Ne0inhk