将一个github回购协议添加到另一个

将一个github回购协议添加到另一个,git,github,Git,Github,如何将现有github回购添加到新回购?这不是“合并”,因为我的意图是将现有repo中的文件添加到新的repo中,从而保留所有文件的文件夹结构和历史记录 我有3种不同的回购协议 github.com/foo/1.git github.com/foo/2.git github.com/foo/3.git 它们中的每一个都有一组文件夹和文件 我正在创建一个名为4(github.com/foo/4.git)的新东西,我想在其中添加现有的回购协议 我是这样做的: git clone github.co

如何将现有github回购添加到新回购?这不是“合并”,因为我的意图是将现有repo中的文件添加到新的repo中,从而保留所有文件的文件夹结构和历史记录

我有3种不同的回购协议

github.com/foo/1.git
github.com/foo/2.git
github.com/foo/3.git
它们中的每一个都有一组文件夹和文件

我正在创建一个名为4(github.com/foo/4.git)的新东西,我想在其中添加现有的回购协议

我是这样做的:

git clone github.com/foo/4.git
git clone github.com/foo/1.git
cd 4
git remote add 1 ../1
git fetch 1
git branch 1-master 1/master
git merge 1-master
提交后,我发现1中的文件和文件夹被直接复制到4中

假设我把abc.txt放在1下面,然后我看到abc.txt放在4下面

我真正想看到的是4/1/abc.txt而不是4/abc.txt,并保留了abc.txt的历史记录

我该怎么做


另一方面,我在开始添加之前阅读了这篇文章:

您希望合并其他回购协议的完整历史记录,但在重写它们之后,将它们的整个历史记录移动到子文件夹中

这就是为什么

对于每个次级回购:

  • 克隆子repo
  • `git筛选器分支--树筛选器“mv*dir/”
  • 将克隆添加为主repo的远程
  • 去拿遥控器
  • git merge
    或(如果您也想重写主机的历史记录)
    git rebase
    已获取(并已重写)的遥控器进入主机的主分支

  • 您希望合并其他回购协议的完整历史记录,但在重写它们之后,将其整个历史记录移动到子文件夹中

    这就是为什么

    对于每个次级回购:

  • 克隆子repo
  • `git筛选器分支--树筛选器“mv*dir/”
  • 将克隆添加为主repo的远程
  • 去拿遥控器
  • git merge
    或(如果您也想重写主机的历史记录)
    git rebase
    已获取(并已重写)的遥控器进入主机的主分支

  • 您正在寻找子模块。我真正想要的是将文件从1,2,3一次性添加到4,保留历史记录,然后删除1,2,3。我该怎么做?不确定子模块是否对我有帮助,因为我相信它们只是指向1,2,3的指针。您正在寻找子模块。我真正想要的是将文件从1,2,3一次性添加到4,保留历史记录,然后删除1,2,3。我该怎么做?不确定子模块是否对我有帮助,因为我相信它们只是指向1,2,3的指针。