创建新的主仓库。将两个单独的repos添加到Main repo中但不合并它们而不丢失历史记录

时间:2018-01-31 20:09:04

标签: git github

我正在创建一个应用程序,并且已经在单独的存储库中处理前端和后端。两者都致力于GitHub。

现在我想创建一个名为Main的新repo,并将Front-end和Back-end repos移动到Main repo中。我想让它们分开,不要合并它们。我还想保留两个repos的日志和提交历史记录。两个回购都有分支,然后合并到主人。

我看到的帖子显示了如何将repos合并为一个保存历史记录的帖子,但我不想将它们合并。

我不是在寻找子模块,也不是孤立的分支。

1 个答案:

答案 0 :(得分:0)

在此网站上找到答案:https://saintgimp.org/2013/01/22/merging-two-git-repositories-into-one-repository-without-losing-file-history/

将两个Git存储库合并到一个存储库而不丢失文件历史记录

基本思想是我们遵循以下步骤:

  1. 创建一个新的空存储库New。
  2. 进行初始提交,因为我们在合并之前需要一个提交。
  3. 将遥控器添加到旧存储库OldA。
  4. 将OldA / master合并为New / master。
  5. 创建一个子目录OldA。
  6. 将所有文件移至子目录OldA。
  7. 提交所有文件移动。
  8. 为OldB重复3-6。
  9. 这些步骤的Powershell脚本可能如下所示:*

    1. 假设当前目录是我们希望创建新存储库的位置。创建新存储库

      • git init
    2. 在我们进行合并之前,我们必须进行初始提交,因此我们将进行虚拟提交

      • dir > deleteme.txt
      • git add .
      • git commit -m “Initial dummy commit”
    3. 添加遥控器并获取旧存储库

      • git remote add -f old_a <OldA repo URL>
    4. 将old_a / master中的文件合并到new / master

      • git merge old_a/master
    5. 清理我们的虚拟文件,因为我们不再需要它了

      • git rm .\deleteme.txt
      • git commit -m “Clean up initial file”
    6. 将old_a repo文件和文件夹移动到子目录中,这样它们就不会与后来出现的其他仓库冲突

      • mkdir old_a
      • dir –exclude old_a | %{git mv $_.Name old_a}
    7. 提交行动

      • git commit -m “Move old_a files into subduer”
    8. 对old_b做同样的事情

      • git remote add -f old_b <OldB repo URL>
      • git merge old_b/master
      • mkdir old_b
      • dir –exclude old_a,old_b | %{git mv $_.Name old_b}
      • git commit -m “Move old_b files into subduer”