¿Cuál es la mejor manera de cambiar el árbol de trabajo a un determinado compromiso antes de la bisección?
-
21-09-2019 - |
Pregunta
Mi flujo de trabajo habitual al iniciar un git bisect
la sesión es:
git bisect start # start a bisect session
git bisect bad # I noticed that the current state is broken
Ahora, a menudo, sé que las cosas que funcionó en el pasado, pero aún no sé que versión era bueno, así que por lo general quieren volver a mi árbol de trabajo a un mayor estado, construir, probar, repetir hasta encontrar una versión de trabajo que me puede marcar con git bisect good
.
¿Cuál es la mejor manera de hacer el "revertir mi árbol de trabajo a un mayor estado de" paso? git reset --hard <some_good_rev>
? git checkout <some_good_rev>
?Algo más?Por favor, justifique su respuesta.
Solución
Yo por lo general no saben donde los buenos rev es, así que tengo que encontrar.Supongo que ¿hasta qué punto puede ser bueno.Digamos, 32 revoluciones.A partir de la punta de una rama, y con la limpieza de directorios de trabajo:
$ git checkout HEAD~32
Ejecutar la prueba.Si es una buena rev, inicio de la bisección.Si no, volver algunos más:
$ git checkout HEAD~32
Enjuague, espuma, repetir.
¿Por qué "git checkout?" Porque "git reset" cambio de que se comprometan los puntos de ramificación como su "punta", pero git checkout no.
Otros consejos
Si no sabe con seguridad cualquier versión donde la funcionalidad trabajó (la confirmación que introduce la funcionalidad?), Que parecen perder mucho (todos?) De la prestación de un bisect. Si sabe que había por lo menos un commit donde la funcionalidad trabajó, aunque no es necesariamente el más reciente cometer donde la funcionalidad trabajó, bandera sólo que uno tan bueno. De lo contrario, que está básicamente haciendo un bisect mismo.