Regresa N confirma en Git para encontrar una confirmación que causa regresiones de testing

¿Hay algún command que me permita verificar una confirmación en function de su distancia de la confirmación actual en lugar de utilizar ID de confirmación?

Caso de uso

Básicamente, estoy pensando en configurar un script de tipo cron job para hacer lo siguiente en un server de compilation:

  • Despliegue lo último de una twig git específica (git pull dev).
  • Comstackrlo, ejecutar las testings.
  • Si el porcentaje de aprobación es menor que el último porcentaje almacenado:
    • Recursivamente, regrese a las testings de compromiso, compilation, ejecución, hasta que encuentre el compromiso donde cambió el porcentaje.
    • Registre las confirmaciones que introdujeron regresiones.

Tengo una idea aproximada de cómo esto funcionaría, pero no funcionará a less que pueda retroceder un compromiso periódicamente.

Si no hay un command específico, supongo que puedo grep el logging de compromiso y tomar el primero cada vez?

¡Agradezco cualquier idea o ayuda!

A diferencia de: ¿Cómo deshacer los últimos commit (s) en Git?

Quiero volver al "N" número de confirmaciones.

 git checkout HEAD~N 

procesará la enésima confirmación antes de su confirmación actual.

Si tiene confirmaciones de fusión en su historial, puede interesarle

 git checkout HEAD^N 

que pagará el N-ésimo padre de un commit de fusión (la mayoría de los commit de fusión tienen 2 padres).

Por lo tanto, para volver siempre a una confirmación después del primer padre de cualquier fusión se compromete:

 git checkout HEAD^1 

También puede estar interesado en git bisect : busque mediante búsqueda binaria el cambio que introdujo un error.

La iteración sobre cada confirmación y la ejecución de las testings podría ser realmente ineficiente si la cantidad de confirmaciones es mucho mayor que la cantidad de confirmaciones que introducen errores. No es necesario ejecutar las testings contra cada confirmación en la historia para encontrar la que introdujo el error. Deberías mirar git bisect , particularmente git bisect run .

La pregunta indica que desea encontrar cada confirmación que introdujo un error desde algún punto de la historia, no solo el más reciente. No creo que puedas hacer eso con una invocación de git bisect ; Tendrás que ponerlo en un bucle en un pequeño script.