0Pricing
Git Advanced: Monorepo, Submodules & Workflows · Leçon

Débogage avec Git Bisect

Utilisez `git bisect` pour localiser efficacement la validation exacte qui a introduit un bogue et gagner un temps précieux lors du débogage.

Débogage avec Git Bisect est une leçon Git Advanced: Monorepo, Submodules & Workflows gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Git Advanced: Monorepo, Submodules & Workflows, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Git Advanced: Monorepo, Submodules & Workflows comprend 4 leçons au total.

Certaines parties de cette leçon n'ont pas encore été traduites et s'affichent en anglais.

What is Git Bisect?

Imagine a bug appears in your project, but you're not sure which recent change caused it. Manually checking each commit can be a huge time sink!

git bisect is a powerful Git command that uses a binary search algorithm to quickly find the exact commit that introduced a bug.

The Binary Search Advantage

How does git bisect work so fast? It's like a game of 'hot or cold' with your commit history.

  • You tell Git a commit you know is bad (has the bug).
  • You tell Git a commit you know is good (before the bug existed).
  • Git picks a commit roughly in the middle and asks you to test it.
  • Based on your feedback, it halves the search space, repeating until the culprit is found.

Starting Your Bisect Hunt

To begin, first you need to tell Git you're starting a bisect session. Then, you mark the known 'bad' (buggy) commit and a known 'good' (working) commit.

You can use commit hashes, branch names, or tags.

git bisect start
git bisect bad HEAD
git bisect good <known_good_commit_hash>

The Iterative Process: Test & Mark

After you define your good and bad commits, Git will automatically check out a commit in the middle of that range. Your job is to test the code at this commit.

  • If the bug is present, mark it as bad.
  • If the bug is NOT present, mark it as good.

Git will then move to the next commit, halving the remaining search space.

Marking a Commit

Once you've tested the currently checked-out commit, use these commands to tell Git whether it's good or bad:

  • To mark the current commit as bad: git bisect bad
  • To mark the current commit as good: git bisect good

Git will then automatically check out the next commit to test.

git bisect bad
# OR
git bisect good

Narrowing Down the Problem

You'll repeat the 'test and mark' process. With each step, git bisect gets closer to the single commit that introduced the bug. It's much faster than checking commits one by one!

For a range of 100 commits, it takes at most 7 tests (log2(100) ≈ 6.64).

Found the Culprit!

Eventually, git bisect will narrow the range down to a single commit. It will then report the first 'bad' commit found, which is your bug introducer!

After finding the bug, it's crucial to exit the bisect session to return your repository to its original state (usually the branch you were on when you started).

git bisect reset

Handling Untestable Commits

Sometimes, git bisect might land on a commit that can't be tested (e.g., it doesn't compile, or dependencies are broken). In such cases, you can tell Git to skip it:

git bisect skip

Git will then pick another commit to test, making sure to exclude the skipped one from the potential range of the bug.

git bisect skip

Automating with Git Bisect Run

For even faster debugging, you can automate the testing process using git bisect run. This command takes a script that performs the test and exits with specific codes:

  • 0: The commit is good.
  • 1-127 (except 125): The commit is bad.
  • 125: The commit should be skipped (e.g., cannot build).

Git will then run the script automatically for each commit until the bug is found.

#!/bin/bash

# Example test script for git bisect run
# Replace 'make test' with your actual test command

if make test;
then
  exit 0 # Tests passed, commit is good
else
  exit 1 # Tests failed, commit is bad
fi

Bisect Workflow Check

Which of the following commands are essential when performing a manual git bisect to find a bug?

Debugging Power-Up!

You've mastered git bisect! This powerful tool transforms bug hunting from a tedious chore into an efficient, systematic process using binary search.

  • Start with git bisect start, defining good and bad commits.
  • Test and mark commits as good or bad.
  • Use git bisect skip for untestable commits.
  • Automate with git bisect run for fast, hands-free debugging.
  • Always finish with git bisect reset.

Happy bug hunting!

Questions Fréquemment Posées

La leçon « Débogage avec Git Bisect » est-elle gratuite ?

Oui — le texte complet de « Débogage avec Git Bisect » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Git Advanced: Monorepo, Submodules & Workflows, passe à CoddyKit PRO. Le cours Git Advanced: Monorepo, Submodules & Workflows comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Débogage avec Git Bisect » ?

Utilisez `git bisect` pour localiser efficacement la validation exacte qui a introduit un bogue et gagner un temps précieux lors du débogage. Tu pratiques Git Advanced: Monorepo, Submodules & Workflows avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Git Advanced: Monorepo, Submodules & Workflows ?

Aucune expérience préalable n'est requise. Git Advanced: Monorepo, Submodules & Workflows sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.

Combien de temps prend la leçon « Débogage avec Git Bisect » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Git Advanced: Monorepo, Submodules & Workflows ?

Oui. Chaque leçon Git Advanced: Monorepo, Submodules & Workflows inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Récupération des validations et des branches perdues
  2. Débogage avec Git Bisect
  3. Optimisation des performances des dépôts Git
  4. Récupérer son travail avec le reflog et le stash
← Retour à Git Advanced: Monorepo, Submodules & Workflows