Git: 在不丢失历史的情况下将两个独立的回购合并为一个

Git: Combining two independent repos to one without losing the history

我得到了两个具有以下文件夹结构的存储库:

> folder1
  >.git
  > file1
  > file2

> folder2
  >.git
  > file3
  > file4

现在我想创建一个新的存储库,将两个以前独立的根文件夹组合在一个共同的根目录下:

> repo
   >.git
   > folder1
      > file1
      > file2
    > folder1
      > file3
      > file4

我如何在 Git 中做到这一点而不丢失以前独立存储库的历史记录?

您可以找到解决方案 here

基本上,

  1. 创建一个新的 repo
  2. 从您的一个存储库中合并
  3. 移动文件
  4. 重复

我猜下面的内容应该有效:

  1. 调整 repo folder1 以具有正确的内部结构。

    cd folder1
    mkdir folder1
    git mv file1 folder1/file1
    git mv file2 folder1/file2
    git commit -a
    
  2. 回购也是如此 folder2

    cd folder2
    mkdir folder2
    git mv file3 folder2/file3
    git mv file4 folder2/file4
    git commit -a
    
  3. git pull

    把一个拉进另一个
    cd folder1  # the top one, not the one we have created in the 1st step.
    git pull /path/to/folder2
    

    或者,或者,将两者合并到新创建的存储库中。

    mkdir repo
    cd repo
    git init
    git pull /path/to/folder1
    git pull /path/to/folder2