连接两个Git存储库的历史?

时间:2012-04-27 17:12:11

标签: git merge repository history commit

我有一个旧的Git回购,称之为app。然后,一年之后,我想从头开始重建应用程序,所以我做了一个新的回购,称之为app-2

现在,我意识到我应该创建一个新的分支或其他东西,而不是新的回购,因为我想在app-2之上移动app的历史然后摆脱app-2的{​​{1}}现在具有app + app的所有历史记录。

这可能吗?

更新:

我尝试通过删除app-2中的所有文件(app目录除外)并进行提交来“重置”app repo。然后:

.git

但是,我在cd ~/Projects/app-2 git format-patch --stdout --root master > ../app/app-2-patches.txt cd ../app git am app-2-patches.txt 分支的地方遇到了冲突。

是否可以在保留app-2历史记录的分支结构的同时应用app-2的提交?

2 个答案:

答案 0 :(得分:2)

你可以使用git的嫁接点。首先将app的历史记录从遥控器中提取到app-2,然后按照说明进行操作,例如:在this answer

答案 1 :(得分:0)

第一步是在一个回购中获取两个应用程序;第二步是以合理的方式合并它们。

对于第一步,我会说将app-2中的所有存储库分支推送到应用程序存储库中的分支:

$ cd /path/to/app-2
$ git remote add app-repo /path/to/app
$ git push app-repo master:app-2-master     # master in app-2 goes to app-2-master in app repo
# repeat for other branches in app-2

现在在app存储库中,您拥有所有分支和所有app-2分支。假设你(想)认为app-2是从app派生的。然后你用以下内容重新定义app上的所有app-2:

$ cd /path/to/app
$ git checkout app-2-master
$ git rebase master

这可能涉及很多解决冲突的工作,但是git也会为你做很多工作。