目录

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 为例,其他代码仓库的配置逻辑一致

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

常见问题

Q1. 推送时提示「Permission denied (publickey)」?

这是 SSH 权限认证失败导致的,通常有两个原因:

  • 本地未生成 SSH 密钥:执行 ssh-keygen -t ed25519 -C "你的邮箱" 生成密钥,一路回车默认即可;

  • 公钥未配置到远程仓库:执行 cat ~/.ssh/id_ed25519.pub(Windows 路径为 C:\Users\你的用户名\.ssh\id_ed25519.pub)复制公钥,到 GitHub、Gitee 等平台的「设置」→「SSH 公钥」中添加,保存后重新推送即可。

Q2. 远程仓库版本比本地新,推送时提示「rejected」?

这是因为其他开发者向远程仓库提交了代码,导致远程版本比本地新。

解决方案:先拉取远程代码合并到本地,再推送

如果是多仓库同步,建议先拉取一个主要仓库(如 GitHub)的代码,合并后再同步推送到所有仓库,避免出现多仓库版本混乱。

Q3. 用 HTTPS 地址推送时,每次都要输入账号密码?

可以配置 Git 缓存凭证,避免重复输入

## Windows 配置缓存凭证
git config --global credential.helper wincred
## Mac 配置缓存凭证(缓存时间默认 15 分钟)
git config --global credential.helper osxkeychain
## Linux 配置缓存凭证(缓存时间 1 小时,单位秒)
git config --global credential.helper 'cache --timeout=3600'

配置后首次推送输入账号密码,后续会自动缓存,无需重复输入。

总结

其实 Git 的远程仓库配置还有很多灵活用法,比如给不同仓库设置不同的拉取和推送地址,大家可以根据自己的需求探索。

如果还有其他问题,欢迎在评论区交流~

版权声明

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

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

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