Why
Grafting is usually required on a software project when migrating from one version control system to other preserving the history of all the commit list previously made prior to migration or when merging the two master branches from 2 repositories of the same project.
Sample Steps to graft using git replace
In this case, I will show you how to pull all the history from a legacy repository (legacy-repo.git) to latest repository (latest-repo.git)
git clone latest-repo.git
cd latest-repo
git remote add legacy legacy-repo.git
Now check if remote repository has been applied
git remote -v
You will see following
legacy [email protected]:<user>/legacy-repo.git (fetch)
legacy [email protected]:<user>/legacy-repo.git (push)
origin [email protected]:<user>/latest-repo.git (fetch)
origin [email protected]:<user>/latest-repo.git (push)
Now fetch files from legacy repository using
git fetch legacy
Now Create local legacy branch from the legacy repository
git checkout -b legacy legacy/master
Now use git log to find the last commit of the legacy-repo
git rev-parse --verify origin
You will see something like below
6ef9179f1d3f1f16a7b5c836365d8b98834f4a7b
Now tag this with name 'last'
git tag last 6ef9179f1d3f1f16a7b5c836365d8b98834f4a7b
Now checkout latest repo master branch by
git checkout master
Get the first commit of the latest repository (latest-repo.git)
git log --max-parents=0
You should see something like this
commit 4c3e193a473b305857413587845a5c9e722533f4
Now tag it with name first
git tag first 4c3e193a473b305857413587845a5c9e722533f4
Now verity tag list
git tag
You will see
first
last
Now Graft using git replace
git replace first last
Now remove legacy remote url
git remote rm legacy
Now verify if the legacy url is removed by
git remote -v
You will see only origin with latest-repo.git
origin [email protected]:<user>/latest-repo.git (fetch)
origin [email protected]:<user>/latest-repo.git (push)
Now push the legacy repository with histories to latest repo
git push --set-upstream origin legacy
Done!
You should see the full history of legacy and current repository on your commit list.
Congratulations @sushrest! You received a personal award!
You can view your badges on your Steem Board and compare to others on the Steem Ranking
Vote for @Steemitboard as a witness to get one more award and increased upvotes!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit