Skip to main content Link Menu Expand (external link) Document Search Copy Copied

Bisecting a Commit: Finding the Culprit of a Bug or Issue

Header Image

Ahoy there, mateys! Have you ever encountered a pesky bug in your code and couldn’t seem to pinpoint which commit caused it? Fear not, for we have the solution to your woes - bisecting a commit.

Finding the Commit That Introduced a Bug or Issue

When you have a large codebase, tracking down the source of a bug can be quite the challenge. Bisecting a commit allows you to identify the exact commit that introduced the bug or issue, making it easier to fix.

So how does it work? Git bisect uses a binary search algorithm to help you narrow down the problematic commit. Essentially, you mark a known “good” commit (one where the code was working correctly) and a known “bad” commit (where the bug first appears). Git then checks out the middle commit between the good and bad ones. You can then test the code and mark it as either good or bad. Git then checks out the middle commit between the last tested commit and the known good/bad commit, repeating the process until the problematic commit is identified.

Let’s say you’re working on a pirate-themed game, and a player reports that they’re unable to buy a certain item in the game store. You know that the bug was not present in the earlier versions of the game, so you mark a commit where the item was last working as the “good” commit. You then mark the current commit as the “bad” commit. Git will then checkout a middle commit between the good and bad ones. You can then test the game store in that commit and mark it as good or bad. Git will continue this process until it identifies the commit that introduced the bug.

# To start bisecting a commit, use the following command:
git bisect start

# Mark the known good commit:
git bisect good <commit-hash>

# Mark the known bad commit:
git bisect bad <commit-hash>

# Test the current commit and mark it as good or bad:
git bisect good/bad

# Git will continue bisecting and testing until it identifies the problematic commit.

Conclusion

Bisecting a commit can be a lifesaver when it comes to tracking down the source of a bug or issue. By using a binary search algorithm, Git can quickly identify the problematic commit, making it easier for you to fix the code. So the next time you encounter a bug, remember to give bisecting a commit a try.

We hope you enjoyed learning about bisecting a commit, mateys! If you’re interested in learning more about Git, check out our other articles on Git basics, branching, and advanced commands. Fair winds and following seas!