Pushing a git branch without its history
I recently shared a project on GitHub and wanted to keep its entire history locally without sharing it publicly. A quick search on StackOverflow revealed the git checkout --orphan <new_branch>
command.
Using this, the following commands allow you to save the history of a branch locally whilst uploading a fresh branch with a single commit.
Assuming you’re on the master
branch, first let’s rename this branch to old
:
git branch -m old
Now we’ll create a new orphan branch called master
.
git checkout --orphan master
When we commit to this branch …
git commit
… our commit will be disconnected from the history of the old
branch because it won’t have a parent commit. This means we can push the new master
branch without sharing the history contained in the old
branch.
(If you haven’t yet added a remote using git remote add origin …
, you’ll need to do that first.)
git push -u origin master
If you have any questions or suggestions, why not get in touch with me on Twitter?