I am currently the only developer working on a project I took over from my predecessor. When I took over the project, it was not under source control. So I created a new git repository, made an initial commit with the state and worked on it since.
But recently I discoveered in a backup an ancient version of the same project, which actually is a git repository, however, as my predecessor knew nothing about git, he copied all files out of it and worked on them without source control.
So, I now have two git repositories, one contains all changes up to a certain date, the other all changes from a later date up until now. But in between, there is a gap without source control.
Is it possible to merge these two repository such that it seems that it always existed as one single repository, but with the changes made without source control as one big commit in between?
答案 0 :(得分:5)
Sure, using the ours
strategy!
Follow the the next steps (lines starting with #
are comments):
# Navigate to your updated project
cd your-updated-project
# Add a remote pointing to the other git repository
# (it can be a local path or an url; I used a local path)
git remote add old-project ../path/to/the/old/git/repo
# Get the content from that repo
git fetch old-project
# Merge the the old repo master branch in your current branch,
# BUT keeping your recent changes (see -s ours)
git merge old-project master -s ours
If you want to merge another branch from the old git repo, do git merge old-project <branch-name> -s ours
(replace <branch-name>
with the branch name you want to merge).
答案 1 :(得分:-1)
You may try to add old repository as remote repository at your new repository then pull changes to merge, assuming your repositories will be the baseline.
$> git remote add old /path/to/other/gitrepo/.git
# if you want to merge their master branch then pull from it
# otherwise specify the correct branch to merge
$> git pull old master