我在.git
和foo/bar
有foo/baz
个回购。这些项目从单独的项目开始,但后来变得相同。
我现在想要将两个现有的存储库“复制”到父目录foo
中。我一直在阅读子树,过滤,合并,移动等,但我不知道做什么是正确的。
我猜我会在父.git
中创建一个新的foo
回购,并将foo/bar
和foo/baz
的历史记录“复制”到{{1} }。现有的回购都没有分支。
如果这是对的,我该怎么做呢?
我不想删除foo
和foo/bar
历史记录。我只想将这些历史记录复制到新的父回购中并继续提交到foo/baz
。
答案 0 :(得分:1)
无论是否存在冲突,都可以解决(虽然没有共同的祖先,但很笨拙,但仍然如此)。
因此,假设bar
和baz
中的唯一分支都被称为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
分支,其中master
和bar
的历史记录在您刚创建的合并提交时加入。您还有分支baz
和bar
以及远程baz
和bar
。如果你愿意,你可以摆脱它们。