I have a Git repo I'm about to release because Science. Unfortunately, its history is a bit messy and I don't necessarily want people to know about the embarrassing mistakes and backtracks I made, or the kind of time I put into the code.
But I don't want to ditch that history either. What I want then is a way to separate the history of the master branch out into a private branch leaving the master on its own.
Let's do this!
#Rename master to old_master git branch -m master old_master #Find the most recent commit on old_master git log #Create, and switch to, a new master branch git checkout --orphan master fb33e2286ffe90641f34c078a81a94e393dc30b8 #Commit the new master git commit -m "Public release" #Push up the branch, overwriting history: git push --set-upstream origin master --force
Now things are good to go.