第一时间收到文章更新
来源 | 大迁世界 (ID:qq449245885)
说实话,有时候你就是不想选边站。
也许公司用的是 GitHub,但团队的 CI/CD 流程跑在 GitLab 上; 或者你正在测试迁移方案; 又或者你就是喜欢多备份备份。
懂你的心情。
好消息是:完全可以将本地 Git 仓库同时关联多个远程仓库,并且用一次推送操作同步更新。
这招已经在多个生产项目中实测过了,真的比想象中简单得多。
下面带你一步步操作,让你的 .git/config
文件安然无恙。
一个本地项目,两个远程仓库,一条命令推送
无需额外克隆,无需复杂脚本。
🧱 第一步:准备本地仓库
可以用现有仓库,也可以新建一个:
git init
如果已经连接了 GitHub 或其他远程,执行:
git remote -v
会看到类似输出:
origin git@github.com:username/repo.git (fetch)
origin git@github.com:username/repo.git (push)
🔗 第二步:添加第二个远程仓库
假设第二个远程是 GitLab,远程名可以自定义,常见如 origin2
或 gitlab
,这里用清晰的 gitlab
:
git remote add gitlab git@gitlab.com:username/repo.git
再次查看:
git remote -v
输出会是:
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)
这样你就同时关联了两个远程。
📤 第三步:同时推送到两个远程仓库
有两种方式:
方式一:手动分别推送
git push origin main
git push gitlab main
灵活且安全,但要多执行一次命令。
方式二:配置多推送地址,实现一次命令推送两个远程
编辑 .git/config
,在 [remote "origin"]
下添加多条 pushurl
:
[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
此后执行:
git push origin main
就会同步推送到 GitHub 和 GitLab 两个仓库。
🔥 小贴士:
如果用于 CI/CD,请确保两个仓库的流水线不会因同一提交重复触发,这点很重要。
🧼 额外操作:重命名或删除远程
重命名远程:
git remote rename origin github
删除远程:
git remote remove gitlab
🤷♀️ 为什么要用两个远程?
- CI/CD 分离:GitHub 管理代码,GitLab 管理部署。
🧃 个人感想
这招救场无数。
无论面对多个客户、团队,还是平台环境,能从同一个本地库同时推送多个远程仓库,是开发效率的倍增器。
而且,每次用起来都感觉自己像个大佬。
赶紧把这招搬进你的工作流吧!