我有一个旧的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
的提交?
答案 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也会为你做很多工作。