将两个单独的 projects/Git 存储库合并到一个主项目中?

Merge two separate projects/Git repos into one master project?

我不确定如何以最佳方式提出这个问题,但我们在工作中设置了测试服务器,并且我们有生产服务器。我们主要在测试服务器上开发,然后在完成功能后将代码(手动)推送到生产服务器。

现在我想摆脱这个我们可以使用 Git 所以我包装了所有文件和诸如此类的东西并创建了一个 Git 存储库。太棒了,测试服务器已经搭建好了。

现在呢?从生产服务器上的文件(不同的)设置另一个 Git 存储库?然后?从那里将两个回购合并为一个回购?

注意:一些开发人员会在生产服务器上编辑文件,不会将这些文件移回我们的测试服务器(主要是因为他们正在开发的功能尚未完成)所以现在有新的更改尚未在我们的测试服务器上更新,现在需要将新更改移至生产环境。

我会像下面描述的那样处理它(不幸的是,同步两者需要大量的手动工作)。重置和创建单独分支的原因是能够在同步后将单个新功能合并到生产中。

  1. 为生产服务器创建一个存储库
  2. 创建测试存储库的本地克隆
  3. 使用 git remote add prod <url>
  4. 将生产仓库添加为本地仓库中的新远程
  5. 获取生产回购 git fetch prod
  6. 如果 prod 上的文件有测试中不存在的更改,合并 prod/master 到本地 master 解决所有冲突
  7. 将本地分支重置为生产状态git reset --soft prod/master
  8. 根据各自的特性创建分支并提交您所做的工作树更改
  9. 合并所有新分支到master分支
  10. 推送所有分支以测试 repo(master 将需要 --force)

请注意,重要的是没有新的分支基于 test/master,而是基于 prod/master。否则,如果不进行其他提交就无法将其合并到生产环境中(这也是我们进行 git 重置并创建单独分支的原因)。

如果直接在主服务器上创建或编辑文件,则需要将它们提交到主服务器并合并回测试。

如果您无法让所有开发人员都使用 git,您最终可能会花费比管理分支机构等更多的时间,所以我建议您查看工作流程以改善生活同步回购后更容易。如果您使用的工作流程不合适,Git 不幸的是不是一个好的解决方案。