Join GitHub today
GitHub is home to over 40 million developers working together to host and review code, manage projects, and build software together.Sign up
I'm busy with a SVN to GIT migration of a large repo. My current trunk branch on the SVN repo is located in
In the new git repo, I would like to keep the
I started by playing with
I tried this tool (thanks!), but it seems these operations are done on a repo level, not specific to branches.
Am I able to rewrite only non-master branches' history?
There are three different ways I can think of to handle this:
and the git filter-repo modified all branches (despite the fact that you didn't want it to touch master), you could then restore the original master branch like so:
git checkout OTHER_BRANCH
git filter-repo --commit-callback '
git filter-repo --refs $(git for-each-ref --format='%(refname)' | grep -v refs/heads/master)
However, the --refs flag also turns off a number of other things you may expect, such as renaming remote tracking branches into normal branches, deleting the old history afterwards, etc. because it doesn't want to delete anything meaningful that you didn't explicitly choose to rewrite and there could be lots of overlap between a branch you didn't overwrite and one you did.
My preference if I were doing this would be roughly (1) then (2) then (3). Hope that helps you get started.
So, again, sorry for the slow response, but I succeeded, with your suggestions. Option 1 didn't really work as the
Option 2 ( and I assume you actually meant
Thanks for all your help. How can I buy you a coffee?
Awesome, glad it worked out for you. Yes, I meant filter-repo and not filter-branch; I edited the comment to correct it. And yeah, changing commit hashes is expected when you're modifying commits; the hashes are a hash of the contents so if the contents change, then the hash has to change. I suspect you meant that there were some old commits that you didn't want the changes applied to, so you just rebased the newer commits on top of some old base.
Anyway, glad it all worked. I don't drink coffee (even being near it can sometimes give me a headache), but people saying thanks for the tool is much appreciated. :-)