Quelle est la meilleure façon de changer l'arbre de travail à un engagement spécifique avant bissectrice?
-
21-09-2019 - |
Question
Mon habitude flux de travail lors du démarrage d'une session de git bisect
est:
git bisect start # start a bisect session
git bisect bad # I noticed that the current state is broken
Maintenant, souvent, je sais que les choses ont fonctionné dans le passé, mais je ne sais pas encore quelle version était bon, donc je veux généralement revenir mon arbre de travail à un état ancien, construire, tester, répéter jusqu'à ce que je trouve un version de travail que je peux marquer avec git bisect good
.
Quelle est la meilleure façon de faire le « Revenir en arrière mon arbre de travail à un état plus ancien » étape? git reset --hard <some_good_rev>
? git checkout <some_good_rev>
? Autre chose? S'il vous plaît justifier votre réponse.
La solution
En général, je ne sais pas où le bien est rev, donc je dois le trouver. Devinez dans quelle mesure pourrait être bon retour. Disons, 32 tours. A partir de l'extrémité d'une branche, et des répertoires de travail propres:
$ git checkout HEAD~32
Exécuter le test. Si c'est un bon tour, commencer bissectrice. Si ce n'est pas, revenir un peu plus:
$ git checkout HEAD~32
Rincer, faire mousser, répéter.
Pourquoi "git checkout?" Parce que « git reset » changera qui charge les points de branchement comme sa « pointe », mais git checkout ne sera pas.
Autres conseils
Si vous ne savez pas que toute version où la fonctionnalité a travaillé (la validation qui a introduit la fonctionnalité?), Vous semblez perdre beaucoup (tout?) De la prestation d'un sécable. Si vous ne savez qu'il y avait au moins un commettras où la fonctionnalité a fonctionné, même si elle est pas nécessairement la plus récente commit où la fonctionnalité a fonctionné, juste drapeau que l'un aussi bon. Sinon, vous faites essentiellement vous-même BiSect.