2012-04-27 44 views
6

我有一个旧的Git回购,叫它app。然后,一年后,我想从头开始重建应用程序,所以我做了一个新的回购,叫它app-2连接两个Git存储库的历史?

现在,我意识到我应该只是做的,而不是一个新的回购新的分支机构或东西,因为我想对app顶部移动的app-2历史,然后摆脱app-2使app现在有所有的历史记录app + app-2

这可能吗?

UPDATE:

我试图在app删除所有文件(除.git目录),并作出承诺“正在重置”的app回购。然后:

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历史的分支结构的同时应用app-2的提交?

+0

是否有一个原因,你需要他们在同一个回购?如果是这样,是否有一个原因必须在同一个分支?为什么不只有一个单独的分支来存储旧版本的历史记录,然后让你的当前新应用成为主分支? – Amber 2012-04-27 17:17:59

回答

2

你可以使用git的移植点。首先从远程将app的历史记录转换为app-2,然后按照说明进行操作。在this answer

+0

具体来说:您可以使用'git filter-branch'将嫁接历史转化为“真实”历史,然后摆脱嫁接点。请记住,这将改变你所有的提交id! – duskwuff 2012-04-27 18:04:30

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 

现在你有它的所有分支机构和所有的应用程序应用程序库比-2分支。假设您(想要)将app-2视为从应用派生而来。然后,你变基所有应用-2对应用具有:

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

这可能涉及大量的工作来解决冲突,但混帐也将被做工作的负荷为您服务。

+1

nit:'git add remote'应该是'git remote add' – 2014-09-21 14:11:49

相关问题