 Photo by @teodordrobota on Unsplash
Photo by @teodordrobota on UnsplashHow-to: find bugs with git bisect
Git bisect is the underutilized superhero of debugging. To use it effectively, keep your commits small and simple – and write tests.
Add bisect script to your bash_profile
# ~/.bash_profile
bisect() {
    git bisect start
    git bisect good $1
    git bisect bad HEAD
    shift
    echo "$@" > ./test.sh
    chmod 755 ./test.sh
    git bisect run ./test.sh
    rm ./test.sh
    git bisect reset
}Use it like this from the command line
- Navigate to a known commit where things do not work (e.g. feature-branch)
- Find a known commit where things work (e.g. master)
- Identify a command you can run to highlight if the bug is present (e.g. running yarn test)
git checkout [bad-commit]
bisect [good-commit] [test command]for instance
git checkout my-feature-branch
bisect master yarn testThe script will churn away and identify the sinful commit like this:
8cbf7dc670544ea69d0b24003249cc9f1ba7904f is the first bad commit
commit 8cbf7dc670544ea69d0b24003249cc9f1ba7904f
Author: Tomas Fagerbekk <tomas.a.fagerbekk@gmail.com>
Date:   Fri Apr 23 16:24:38 2021 +0200
    logging: add dev logging of requests
 src/config/index.ts                                  | 3 ---
 src/config/initializers/express.ts                   | 8 ++++++++
 src/services/Logger/local/providers/Winston/index.ts | 5 -----
 3 files changed, 8 insertions(+), 8 deletions(-)From there, you should have no problem finding the reason for your bug (given the commit is small).
Prerequisites
- Have small commits. (Do NOT squash your pull requests!).
- Every commit should be made in a working-state of the application
- Write testable code (ideally by writing tests)
Previous postReact hooks, avoid them?
Next PostUnderstanding ESLint config