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

一. 引言

我们在实际工作中经常会涉及项目备份问题,尽管公司都有自己的仓库,但是呢很多情况下我们都还需要另外一个仓库。

一方面公司仓库通常需要公司内网或者链接VPN,有时候临时要用可能并不方便。

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

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

二. 查看当前的远程仓库

执行命令:

bash 复制代码
git remote -v

通常来讲输入如下:

bash 复制代码
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了,建议起一个有意义的名字,常见的命名方式:

bash 复制代码
gitee
origin_gitee
backup
mirror

例如:

主仓库:origin(bitbucket)

镜像仓库:gitee(gitee)

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

3.2 提前准备远程仓库

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

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

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

bash 复制代码
https://gitee.com/***/ignore-modules.git

3.3 添加第二个远程仓库

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

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

bash 复制代码
git remote add gitee https://gitee.com/***/ignore-modules.git

命令格式说明:

bash 复制代码
git remote add <remote名称> <仓库地址>

在本例中:

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

3.4 查看绑定结果

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

bash 复制代码
git remote -v

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

bash 复制代码
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

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

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

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

bash 复制代码
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 不会自动帮你选择目标仓库。

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

基本格式:

bash 复制代码
git push <remote名> <分支名>

例如:

推送到 Bitbucket(origin):

bash 复制代码
git push origin main

推送到 Gitee:

bash 复制代码
git push gitee main

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

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

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

4.2.1 给 origin 添加多个 push 地址

例如,将 Gitee 也绑定到 origin:

bash 复制代码
git remote set-url --add origin https://gitee.com/***/ignore-modules.git

执行后查看:

bash 复制代码
git remote -v

结果类似:

bash 复制代码
origin https://***@bitbucket.org/... (fetch)
origin https://***@bitbucket.org/... (push)
origin https://gitee.com/***/...      (push)

说明:

  • fetch:仍然从 Bitbucket 拉取
  • push:同时推送 Bitbucket + Gitee
4.2.2 使用方式

之后只需执行:

bash 复制代码
git push origin main

即可自动同步两个仓库。

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

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

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

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

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

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

使用建议(经验总结)

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

5.1. 个人项目 / 开源项目

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

推荐方式:

bash 复制代码
主仓库 + 镜像仓库
配置多个 push 地址

特点:

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

优点:

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

5.2. 公司项目 + 个人备份

适合人群:企业开发者

推荐方式:

bash 复制代码
origin:公司仓库
gitee:个人备份仓库
分别维护

特点:

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

优点:

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

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

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

推荐方式:

bash 复制代码
主仓 + 备份仓 + 镜像仓
多端同步

特点:

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

优点:

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

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

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

bash 复制代码
fetch:主仓库
push:主仓 + 镜像仓

特点:

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

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

写在最后

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

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

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

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

相关推荐
春日见1 天前
如何创建一个PR
运维·开发语言·windows·git·docker·容器
stevenzqzq2 天前
git 常用操作
大数据·git
Curvatureflight2 天前
Git工作流最佳实践:从混乱到优雅
git
wu~9702 天前
GitHub永不遗忘,使用git push -f来覆盖的提交依旧保留
git·github
Vermouth_002 天前
git clone的时候提示access denied
git
qq_437657272 天前
清楚本地的git并重新登录
git
jiang_changsheng2 天前
工作流agent汇总分析 2
java·人工智能·git·python·机器学习·github·语音识别
顶点多余2 天前
版本控制器-git
linux·git
夔曦2 天前
Git工程日常下拉/上传完整流程(自用)
git