Cómo diagnosticar / arreglar un git repo

Nuestro repository git central se puso en un estado extraño después de un compromiso que involucraba un repository local reiniciado.

No estoy 100% seguro de lo que se hizo exactamente en este compromiso, pero después de este compromiso, los cambios de otros commits pueden ser anulados silenciosamente con las versiones anteriores cuando se envía material desde este repository local reseteado ("silenciosamente" significa que se sobrescribe otro commits no aparecen en el historial de cambios).

Mis preguntas son:
(1) ¿Cómo diagnostico lo que sucedió (preferiblemente sin acceso al repository local reseteado)?
(2) Si no fuera capaz de descubrir qué sucedió, ¿cuál es el mejor curso de acción para deshacerse de este estado?

Para (2) estoy pensando en (a) descartar el repository local problemático y nunca volver a usarlo, (b) HARD restablecer el repository central antes de la confirmación problemática y reproducir las confirmaciones excluyendo la confirmación problemática, manualmente.

Podrías ver todos los cambios realizados por una confirmación usando git show <commit-id> . No estoy seguro de qué quiere decir con "sobrescribir de otras confirmaciones que no aparecen en el historial de cambios", no existe la sobrescritura en git, solo hay confirmaciones.

Entonces, ¿has identificado una comisión problemática? Cuando solo git revert

¿O una twig fue reescrita por empuje de fuerza (algunas confirmaciones desaparecieron de la historia)? Eso es peor, deberías usar git fsck −−lost-found hasta que sea basura recolectada.

La próxima vez configure el repository central para prohibir los avances rápidos mediante logAllRefUpdates=true o al less habilitar los reflogs por logAllRefUpdates=true .