When we would like to make a change in the first commit on master, we cannot use interactive rebasing and resetting. Both of them have security mechanisms to prevent this action. Instead, we either have to change our master (using —orphan) or delete the branch while we're on it.
rm -rf .git. This command deletes everything related to Git in the repository. We will lose all the branches and the commits.
Let's change the
First, we need to rename the
master branch. (We assume a branch named
old_master doesn't exist yet)
git branch -m master old_master
--move is used to rename/move the branch and its reflog. This moves everything (all the commits and history) from the
master branch to the
old_master branch. Now our branch looks like this:
Next, we need to create an orphan branch from the current head.
git checkout --orphan master
--orphan creates a new branch without a root so that the newly created branch doesn't have a history and a parent. The new branch is totally disconnected from all other branches and commits. But it still has all the files from the
old_master since we created a new branch while we were in the
The last thing is deleting the
old_master since we don't need it anymore. (We can keep it to preserve history if we want to.)
git branch -D old_master
Now we have the latest changes, and we are in a brand new
master branch. But there is another way to do this with a single command. We need to make sure we're on the
git update-ref -d HEAD
This command deletes the branch we are in. If we are in
master, this command will delete the
master branch, and all the commits.