I have an old Git repo, call it app
. Then, after a year, I wanted to rebuild the app from scratch, so I made a new repo, call it app-2
.
Now, I realize I should've just made a new branch or something, instead of a new repo, because I want to move the history of app-2
on top of app
and then get rid of app-2
so that app
now has all the history of app
+ app-2
.
Is this possible to do?
UPDATE:
I tried "reseting" the app
repo by removing all the files in app
(except for the .git
directory) and making a commit. Then:
cd ~/Projects/app-2
git format-patch --stdout --root master > ../app/app-2-patches.txt
cd ../app
git am app-2-patches.txt
But, I got conflicts in places where I had branches in app-2
.
Is it possible to apply the commits from app-2
while keeping the branch structure of the history of app-2
?
You can use git's graft points for this. First pull the history of
app
intoapp-2
from a remote, then follow the instructions e.g. in this answer.Step one is get the two apps in one repo; step two is merge them in some sensible way.
For step one I'd say push all of the repository branches in app-2 to branches in the app repository:
Now over in the app repository you have all its branches and all the app-2 branches. Let's say you (want to) consider app-2 as derived from app. Then you rebase all of app-2 on app with:
this might involve lots of work to resolve conflicts but git will be doing loads of work for you too.