Git Remote 实现双向仓库同步教程(适合跨公司协作)
在实际开发中,尤其是跨公司或跨团队协作时,常常会遇到这样的场景:
- A 公司使用仓库地址
https://aproject.com/a.git
- B 公司使用仓库地址
https://bproject.com/b.git
两个仓库内容需要保持同步,但又各自独立维护。本文将介绍如何使用 Git Remote 实现 双向同步,让两个仓库之间的代码协作变得高效、可控。
🧠原理简介:Git Remote 是什么?
Git Remote 是 Git 提供的远程仓库管理机制。你可以为本地仓库添加多个远程源(remote),并从中拉取(fetch)、推送(push)代码。
通过为 A 仓库添加 B 仓库为远程源,或反之,就可以实现代码的双向流动。
🛠️准备工作
确保以下条件满足:
- 两个仓库都能通过 HTTP 或 SSH 访问
- 有权限推送到对方仓库(建议使用 Token 或 SSH Key)
- 本地安装了 Git(推荐版本 ≥ 2.20)
🧭操作流程详解
✅第一步:克隆 A 仓库到本地
git clone http://aproject.com/a.git
cd a
✅第二步:添加 B 仓库为远程源
git remote add bproject http://bproject.com/b.git
你可以通过以下命令查看远程源列表:
git remote -v
输出示例:
origin http://aproject.com/a.git (fetch)
origin http://aproject.com/a.git (push)
bproject http://bproject.com/b.git (fetch)
bproject http://bproject.com/b.git (push)
✅第三步:从 B 仓库拉取代码
git fetch bproject
这会将 B 仓库的所有分支拉取到本地,但不会自动合并。
✅第四步:创建本地分支跟踪 B 仓库分支
假设 B 仓库的主分支是 main
:
git checkout -b bproject-main bproject/main
现在你有一个本地分支 bproject-main
,它的内容来自 B 仓库。
✅第五步:合并 B 仓库代码到 A 仓库主分支
git checkout main
git merge bproject-main
如果有冲突,Git 会提示你手动解决。
✅第六步:推送合并后的代码到 A 仓库
git push origin main
✅第七步(可选):反向同步到 B 仓库
如果你希望 A 仓库的代码也同步到 B 仓库:
git push bproject main
这样,B 仓库也会获得最新的代码。
🔁如何实现双向同步?
你可以在 B 仓库也执行相同操作:
- 克隆 B 仓库
- 添加 A 仓库为远程源
- fetch → merge → push
这样就实现了真正的双向同步。
📦进阶技巧
🕒定时同步脚本(可选)
可以使用 Shell 或 Python 脚本定时执行同步逻辑,配合 cron
或 Windows 任务计划。
🔐使用 SSH Key 提升安全性
建议使用 SSH 地址(如 git@bproject.com:b.git
)并配置 SSH Key,避免频繁输入密码。
🧪同步前先 dry-run
git fetch --dry-run bproject
可以预览将要拉取的内容,避免误操作。
🧯常见问题排查
问题 | 原因 | 解决方案 |
---|---|---|
Permission denied | 没有权限 | 检查 Token 或 SSH Key |
fatal: remote already exists | 重复添加远程 | 使用 git remote remove bproject 后重新添加 |
合并冲突 | 两边修改了相同文件 | 手动解决冲突后再提交 |
📝总结
使用 Git Remote 实现双向同步是一种灵活、可控的协作方式,适合跨公司、跨团队的代码协作。只需掌握 remote
、fetch
、merge
、push
等基本命令,就能轻松实现仓库间的互通。