将2个Git Repo历史记录复制到新的父目录(我想)

时间:2015-03-17 14:15:40

标签: git

我在.gitfoo/barfoo/baz个回购。这些项目从单独的项目开始,但后来变得相同。

我现在想要将两个现有的存储库“复制”到父目录foo中。我一直在阅读子树,过滤,合并,移动等,但我不知道做什么是正确的。

我猜我会在父.git中创建一个新的foo回购,并将foo/barfoo/baz的历史记录“复制”到{{1} }。现有的回购都没有分支。

如果这是对的,我该怎么做呢?

我不想删除foofoo/bar历史记录。我只想将这些历史记录复制到新的父回购中并继续提交到foo/baz

1 个答案:

答案 0 :(得分:1)

无论是否存在冲突,都可以解决(虽然没有共同的祖先,但很笨拙,但仍然如此)。

因此,假设barbaz中的唯一分支都被称为master,我们会这样做:

$ cd /path/to/foo
$ git init
$ git remote add bar bar
$ git remote add baz baz
$ git fetch bar master:bar
$ git fetch baz master:baz

此时,您有一个新的foo存储库,其中包含空分支master,一个分支bar,其中包含foo/bar存储库中的内容和一个分支{{1使用baz存储库中的内容。

foo/baz

此时,如果存在具有相同名称且具有不同内容的任何文件,则可能会发生合并冲突。示例输出:

$ git merge bar
$ git merge baz

此时somefile.txt将包含两个版本的内容。像往常一样解决冲突并做

Auto-merging somefile.txt
CONFLICT (add/add): Merge conflict in somefile.txt
Automatic merge failed; fix conflicts and then commit the result.

完成合并。

因此,您现在拥有一个$ git commit 分支,其中masterbar的历史记录在您刚创建的合并提交时加入。您还有分支bazbar以及远程bazbar。如果你愿意,你可以摆脱它们。