将一个github repo添加到另一个

时间:2017-05-09 19:23:43

标签: git github

如何将现有的github回购添加到新的回购?这不是"合并"因为我的目的是将现有仓库中的文件添加到新的仓库中,保留所有文件的文件夹结构和历史记录。

我有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的历史记录。

我该怎么做?

在旁注中,我在开始添加以下内容之前阅读了这篇文章:http://blog.caplin.com/2013/09/18/merging-two-git-repositories/

1 个答案:

答案 0 :(得分:0)

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

这就是git filter-branch的用途。

对于每个子目录:

  1. 克隆subrepo
  2. `git filter-branch --tree-filter“mv * dir /”
  3. 将克隆添加为主仓库的远程
  4. 抓取那个遥控器
  5. git merge或(如果你想重写主人的历史记录)git rebase将获取的(并且已经重写过的)遥控器放入主人的主要分支。