目录
项目场景
一个项目由 A 开发团队和 B 开发团队共同开发,由于网络等客观因素的限制,两个开发团队需要分别将代码提交到位于不同服务器上的 A 仓库 和 B 仓库的 develop 分支。A 团队成员可以访问 A 仓库和 B 仓库,B 团队成员只能访问 B 仓库。为了实现 A 仓库和 B 仓库的同步,需要 A 开发团队的负责人每天将两个仓库 develop 分支的代码进行同步更新。
解决思路
- 在 B 仓库里拉一个 develop-merge 的分支,每次把 A 仓库 develop 分支的代码覆盖到这个分支,再把 B 仓库的 develop 分支合并到 develop-merge 分支。最后覆盖回 A 仓库的 develop 分支,并 merge 到 B 仓库的 develop分支。
- 在 B 仓库的 develop-merge 分支合并代码,合完后有两个方向,一是拷贝到 A 仓库的本地目录,再提交;二是 merge 到 B 仓库的 develop 分支。
方案实施
A 开发团队和 B 开发团队分别在 A 仓库和 B 仓库的 develop 分支上提交所有代码。
本地 A 仓库切到 develop 分支拉取最新代码。
本地 B 仓库切到 develop-merge 分支。把 A 仓库本地目录的 develop 分支源代码整体复制,覆盖 本地 B 仓库的 develop-merge 分支。
在本地 B 仓库的 develop-merge 分支上执行:
git add
git commit -m "同步代码"
本地 B 仓库切到 develop 分支,拉取 B 仓库远程最新代码,切回 develop-merge 分支,合并 develop 分支,执行:
git merge develop
解决冲突后再执行:
git add .
git commit -m "同步代码"
git push
切到本地 B 仓库的 develop 分支,
# 把本地 B 仓库的 develop-merge 分支合并到 develop 分支
git merge develop-merge
# 提交
git push origin develop
切回本地 B 仓库的 develop-merge 分支,把 B 仓库本地目录的 develop-merge 分支源代码整体复制,覆盖 A 仓库本地目录的 develop 分支。在本地 A 仓库的 develop 分支执行:
git add
git commit -m '同步代码'
git push origin develop
通过以上操作,A 仓库和 B 仓库的 develop 分支代码实现了同步更新。