Git:将两个独立的回购合并为一个而不会丢失历史

时间:2017-09-19 15:54:53

标签: git github configuration-management

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

> folder1
  >.git
  > file1
  > file2

> folder2
  >.git
  > file3
  > file4

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

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

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

2 个答案:

答案 0 :(得分:1)

您可以找到解决方案here

基本上,

  1. 制作新的回购
  2. 从您的一个回购集合中合并
  3. 移动文件
  4. 重复

答案 1 :(得分:1)

我想以下内容应该有效:

  1. 调整回购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