517 votes

Comment utiliser git bisect ?

J'ai lu des articles disant que git bisect est génial. Cependant, je ne suis pas un locuteur natif et je n'arrive pas à comprendre pourquoi c'est génial.

Quelqu'un pourrait-il me faire une démonstration avec un exemple de code ?

  1. Comment l'utiliser ?
  2. Est-ce que c'est juste comme svn blame ?

1 votes

@01 : Comme le dit le livre git : effectuer une recherche par force brute dans l'historique du projet .

14 votes

Pas si ///brute :-), il utilise la recherche binaire.

1 votes

"git blame" est similaire à "svn blame". "git bisect" est une chose complètement différente.

5voto

VonC Points 414372

Remarque : les termes good et bad ne sont pas les seuls que vous pouvez utiliser pour marquer un commit avec ou sans une certaine propriété.

Git 2.7 (Q4 2015) a introduit de nouvelles fonctionnalités. git bisect options.

 git bisect start [--term-{old,good}=<term> --term-{new,bad}=<term>]
                  [--no-checkout] [<bad> [<good>...]] [--] [<paths>...]

En ajoutant de la documentation :

Parfois, vous ne recherchez pas l'engagement qui a introduit une rupture, mais plutôt une qui a provoqué un changement entre un autre "ancien" état et un "nouvel" état. .

Par exemple, vous pouvez rechercher le commit qui a introduit une correction particulière.
Ou bien vous recherchez le premier commit dans lequel les noms de fichiers du code source ont finalement tous été convertis au standard de nommage de votre entreprise. Ou n'importe quoi d'autre.

Dans ce cas, il peut être très déroutant d'utiliser les termes "bon" et "mauvais" pour désigner "l'état avant le changement" et "l'état après le changement".

Ainsi, à la place, vous pouvez utiliser les termes " old " et " new ", respectivement, à la place de " good " et " bad ".
(Mais notez que vous ne pouvez pas mélanger " good " et " bad " avec " old " et " new " en une seule session).

Dans cet usage plus général, vous fournissez git bisect avec un " new "Le commit a une certaine propriété et un " old "qui n'a pas cette propriété.

Chaque fois git bisect vérifie un commit, vous testez si ce commit a la propriété :
Si c'est le cas, marquez le commit comme " new "Sinon, marquez-le comme " old ".

Quand la bissection est faite, git bisect rapportera quel commit a introduit la propriété.


Voir commit 06e6a74 , commettre 21b55e3 , commettre fe67687 (29 juin 2015) par Matthieu Moy ( moy ) .
Voir commettre 21e5cfd (29 juin 2015) par Antoine Delaite ( CanardChouChinois ) .
(fusionné par Junio C Hamano -- gitster -- sur commettre 22dd6eb , 05 Oct 2015)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X