当一个是另一个的子目录而不丢失提交历史时,如何合并两个Git存储库?

时间:2017-06-20 16:53:29

标签: git merge commit subdirectory repo

当前文件夹结构

  • / root:此处存在服务器代码
  • / root / client:此处存在客户端代码(服务器目录中的子目录)。

当前git跟踪

  • 1 repo跟踪/ root中的服务器代码,用于gitignores整个客户端目录
  • 1 repo跟踪仅在/ root / client中的客户端代码。

问题

我正在尝试合并这两个repos ,同时保留一个作为另一个子目录,结合两者的历史提交(不丢失任何)。

到目前为止的结果

我发现在互联网上已解决了很多情况,其中两个存储库有1)相同的文件或2)最终将在同一文件夹级别合并在一起,但是如果有一个合并两个存储库则没有找到太多是另一个子目录。

非常感谢任何帮助。谢谢!

1 个答案:

答案 0 :(得分:1)

此步骤将合并两个master分支:

  1. 将客户端项目文件夹移动到服务器文件夹外部的文件夹(例如,tmp_client
  2. 在新客户项目文件夹(tmp_client)内创建一个名为client的新文件夹。
  3. 将所有内容从tmp_client移至新client文件夹
  4. 添加并提交更改:

    git add -A .添加更改

    git commit -m "Move content to client folder"

  5. 为服务器添加新的远程分支:

    git remote add server git_server_repo_url

  6. 从服务器主分支中提取更改

    git pull server master这将合并更改

  7. 将更改推送到服务器git存储库

    git push server master

  8. PD:如果你想确定服务器分支中的一切正常,你可以创建一个新的分支,而不是将其推送到服务器的工作bramch,然后合并新的分支。