如何将一个 Git 项目关联到两个远程仓库(且不出错)

说实话,有时候你就是不想选边站。

也许公司用的是 GitHub,但团队的 CI/CD 流程跑在 GitLab 上; 或者你正在测试迁移方案; 又或者你就是喜欢多备份备份。

懂你的心情。

好消息是:完全可以将本地 Git 仓库同时关联多个远程仓库,并且用一次推送操作同步更新。

这招已经在多个生产项目中实测过了,真的比想象中简单得多。

下面带你一步步操作,让你的 .git/config 文件安然无恙。


一个本地项目,两个远程仓库,一条命令推送

无需额外克隆,无需复杂脚本。


🧱 第一步:准备本地仓库

可以用现有仓库,也可以新建一个:

go 复制代码
git init

如果已经连接了 GitHub 或其他远程,执行:

go 复制代码
git remote -v

会看到类似输出:

go 复制代码
origin  git@github.com:username/repo.git (fetch)
origin  git@github.com:username/repo.git (push)

🔗 第二步:添加第二个远程仓库

假设第二个远程是 GitLab,远程名可以自定义,常见如 origin2gitlab,这里用清晰的 gitlab

go 复制代码
git remote add gitlab git@gitlab.com:username/repo.git

再次查看:

go 复制代码
git remote -v

输出会是:

go 复制代码
origin  git@github.com:username/repo.git (fetch)
origin  git@github.com:username/repo.git (push)
gitlab  git@gitlab.com:username/repo.git (fetch)
gitlab  git@gitlab.com:username/repo.git (push)

这样你就同时关联了两个远程。


📤 第三步:同时推送到两个远程仓库

有两种方式:

方式一:手动分别推送

go 复制代码
git push origin main
git push gitlab main

灵活且安全,但要多执行一次命令。

方式二:配置多推送地址,实现一次命令推送两个远程

编辑 .git/config,在 [remote "origin"] 下添加多条 pushurl

go 复制代码
[remote "origin"]
    url = git@github.com:username/repo.git
    fetch = +refs/heads/*:refs/remotes/origin/*
    pushurl = git@github.com:username/repo.git
    pushurl = git@gitlab.com:username/repo.git

此后执行:

go 复制代码
git push origin main

就会同步推送到 GitHub 和 GitLab 两个仓库。


🔥 小贴士:

如果用于 CI/CD,请确保两个仓库的流水线不会因同一提交重复触发,这点很重要。


🧼 额外操作:重命名或删除远程

重命名远程:

go 复制代码
git remote rename origin github

删除远程:

go 复制代码
git remote remove gitlab

🤷‍♀️ 为什么要用两个远程?

  • 备份:GitHub 崩了,GitLab 还在;

  • 迁移:试用新平台,旧平台继续线上运行;

  • 镜像:想多地方展示代码,简单又直观;

  • CI/CD 分离:GitHub 管理代码,GitLab 管理部署。


🧃 个人感想

这招救场无数。

无论面对多个客户、团队,还是平台环境,能从同一个本地库同时推送多个远程仓库,是开发效率的倍增器。

而且,每次用起来都感觉自己像个大佬。

赶紧把这招搬进你的工作流吧!

前端AI·探索:涵盖动效、React Hooks、Vue 技巧、LLM 应用、Python 脚本等专栏,案例驱动实战学习,点击原文了解更多详情。

最后:

python 技巧精讲

React Hook 深入浅出

CSS技巧与案例详解

vue2与vue3技巧合集

相关推荐
李少兄8 小时前
在 IntelliJ IDEA 中修改 Git 远程仓库地址
java·git·intellij-idea
先跑起来再说14 小时前
Git 入门到实战:一篇搞懂安装、命令、远程仓库与 IDEA 集成
ide·git·后端·elasticsearch·golang·intellij-idea
承渊政道17 小时前
Linux系统学习【Linux系统的进度条实现、版本控制器git和调试器gdb介绍】
linux·开发语言·笔记·git·学习·gitee
Doro再努力17 小时前
【Linux操作系统12】Git版本控制与GDB调试:从入门到实践
linux·运维·服务器·git·vim
摇滚侠20 小时前
MAC IDEA GIT 提交区显示了几个不存在的目录
git·idea
城东21 小时前
Git使用[远程仓库远端的head比本地和提交的head旧,其他人拉不到最新代码]
git·head·远程仓库远端·比本地和提交的head旧·其他人拉不到最新代码
何中应1 天前
使用SSH地址拉取远程仓库代码报下面的错误
git
何中应1 天前
Git本地仓库命令补充
git
sun0077001 天前
执行repo sync -c -d -j4以后,提交未git push的代码看不到了。要怎么恢复?
git
胖虎11 天前
Git 一个本地仓库同时推送到两个远程仓库(详细教程)
git·多远程仓库·双远程仓库·git双远程·git备份