Do you need a simple way to git remove a commit from anywhere in the branch? Do you like to keep your git history clean? Luckily with Git, there is always a way. Even if you’re not an advanced Git user, this trick should be fairly straightforward to implement. Don’t be intimidated! It utilizes git rebase
, which rewrites your commit history. Basically, using rebase, you can remove any git commit from your history. The git rebase feature is used in many ways to rewrite history, including removing single commits from the middle of the branch.
What is git rebase?
Git rebase is a command that allows you to integrate changes from one branch into another while giving you more control over the history. It can also be used to rewrite a single branch (you don’t have to be merging in another branch). It’s used to keep a git history clean by modifying past commits that were already committed. Using rebase, you can easily use git to remove a commit in the middle of a branch.
The Command
git rebase -i <commit id>~1
To remove a commit, you need to get its commit ID. Once you are in interactive mode, which is what the -i
flag is, you can remove anything that leads up to that commit. For example, if you select a commit that is 5 commits back in your git history, you will have the option to interact with the last 5 commits. In our case, we only want to git remove a commit from the middle.
In the picture above, I entered a4b47233db497c58a48ff47a7cf069f737d2bc35
in the git rebase command. Notice that the HEAD points to the top commit. That was my most recent commit at the time. In my case, I entered git rebase -i a4b47233db497c58a48ff47a7cf069f737d2bc35~1
.
If you chose to read the text in the image above, you’ll notice that there are a lot of options when in interactive rebase mode. For our purposes, removing or commenting out the desired commits should be enough.
Notice that the HEAD commit is at the bottom and the commit that I entered in the command is at the top. If we’re only targeting a single commit, only a single comment is needed.
To remove any commit, comment out the line (put a #
in front of it). You can remove as many commits as you want. In this case, I only want to remove a single commit in the middle of this branch. Once you’ve done that, save the revision (CTRL+X
then press enter if you’re using the default nano editor).
Let’s check the git history again using
.git log
Basically, I used git to remove a commit from history, like it was never there in the first place. A nice and clean solution, especially if you like to keep your git history clean.
Interactive Commits
Since this rebase is interactive using the
flag, git will go through each commit that needs an action and you will run -i
when you are done with it. A common example is a merge conflict, which you will solve by manually editing the files, running git rebase --continue
and then git add .
. Once these commits are taken care of, your history will successfully be rewritten! In some cases, you may not need to do anything at all. Pretty simple, right?git rebase --continue
When I ran into this issue on a project, some googling led me to this post.
Posted on
Excellent, thanks!
Posted on
You’re very welcome!
More Posts
Font Awesome Icons Not Showing: The Ultimate Reference For Fixing Your Icons
Do you need a simple way to git remove a commit from anywhere in the branch? Do you like to keep your git history clean? Luckily with Git, there is always a way. Even if you’re not an advanced Git user, this trick should be fairly straightforward to implement. Don’t be intimidated! It utilizes git…
Read More
(Demo) Converting jQuery Navbar Code to Vanilla JavaScript
Do you need a simple way to git remove a commit from anywhere in the branch? Do you like to keep your git history clean? Luckily with Git, there is always a way. Even if you’re not an advanced Git user, this trick should be fairly straightforward to implement. Don’t be intimidated! It utilizes git…
Read More
Let’s Learn Laravel Blade: Conditional Statements (Part 2)
Do you need a simple way to git remove a commit from anywhere in the branch? Do you like to keep your git history clean? Luckily with Git, there is always a way. Even if you’re not an advanced Git user, this trick should be fairly straightforward to implement. Don’t be intimidated! It utilizes git…
Read More
[Demo] Defining Reusable Column Extends with SCSS
Do you need a simple way to git remove a commit from anywhere in the branch? Do you like to keep your git history clean? Luckily with Git, there is always a way. Even if you’re not an advanced Git user, this trick should be fairly straightforward to implement. Don’t be intimidated! It utilizes git…
Read More
WordPress: How To Create a Custom Admin Button with ACF
Do you need a simple way to git remove a commit from anywhere in the branch? Do you like to keep your git history clean? Luckily with Git, there is always a way. Even if you’re not an advanced Git user, this trick should be fairly straightforward to implement. Don’t be intimidated! It utilizes git…
Read More
Getting Sassy: 3 Useful Ways To Use SASS Mixins
Do you need a simple way to git remove a commit from anywhere in the branch? Do you like to keep your git history clean? Luckily with Git, there is always a way. Even if you’re not an advanced Git user, this trick should be fairly straightforward to implement. Don’t be intimidated! It utilizes git…
Read More