目录

Git 配置同时提交代码到多个仓库,如同步代码到 gitee、gitlab、github

背景

在日常开发中,我们可能会有这样子的一种需求,需要同时将代码提交到过个git仓库的情况

比如我的代码仓库是在 gitee,但是我又想要使用 gitlab 仓库的 ci/cd 功能,一开始每次提交都要分别推送到两个仓库,不仅麻烦还容易漏推导致版本不一致。后来研究了Git的远程仓库配置,发现只需简单设置就能实现“一次提交,多仓同步”,效率直接翻倍。

这篇就把从基础配置到进阶优化的全流程分享出来,亲测有用,非常推荐使用。

原理

Git的单个远程仓库(比如默认的origin)支持配置多个推送地址(push URL)

平时我们用“git push origin main”推送时,Git会默认向origin的推送地址发送代码;

如果给origin配置多个推送地址,执行一次push命令,Git就会自动把代码推送到所有配置的地址上,这就是多仓库同步的核心逻辑。

简单说,远程仓库就像一个“分发中心”,我们可以给这个中心绑定多个“目的地”(Gitee、GitHub等),一次分发就能覆盖所有目的地。核心优势是:不用修改提交流程,保持“add→commit→push”的常规操作。

实现

首先,进入仓库中隐藏目录 .git 目录,找到 config 文件

/img/git-sync-warehouses/0101.png
gitconfig文件

vim config

## 找到 
[remote "origin"]
        url = https://xxxx:xxx@gitee.com/xxx/xxx.git # 这是你原来的仓库地址
        url = https://username:password@gitlab.com/xxx/xxx.git  # 添加你需要同步的仓库地址
        fetch = +refs/heads/*:refs/remotes/origin/*

添加你需要同步的仓库地址

url = https://<账号>:<密码或者密钥>@gitlab.com/<仓库地址>

注意:如果你的 账号 / 密码 存在特殊字符,则需要进行转义

比如

@ —> %40

Gitlab 密钥的生成方法,如下图

/img/git-sync-warehouses/0102.png
gitlab生成密钥

以上是以 gitlab 为例,其他代码仓库的配置逻辑一致

配置完成后就可以测试下代码提交,修改代码,提交后验证下配置的仓库是否有提交更新记录

版权声明

未经授权,禁止转载本文章。
如需转载请保留原文链接并注明出处。即视为默认获得授权。
未保留原文链接未注明出处或删除链接将视为侵权,必追究法律责任!

本文原文链接: https://fiveyoboy.com/articles/git-sync-warehouses/

备用原文链接: https://blog.fiveyoboy.com/articles/git-sync-warehouses/