Rastrear file en el time con Git

Tengo el siguiente problema: en un gran repository, hay una class que me interesa pero que ya no está en el repository que se va a encontrar. Me tropecé con él en un estado anterior después de una búsqueda, y ahora quiero rastrear esta class hasta el presente.

Usualmente se usaría el logging de Git para rastrear el historial de un file hacia atrás (para verificar quién ha modificado esa class), pero dado que esta class se eliminó o movió, me gustaría encontrar el compromiso, donde se eliminó o movió esta class (especialmente para encontrar la confirmación que indica el motivo POR QUÉ se eliminó). Por lo tanto, necesitaría un mecanismo para rastrear el historial de ese file en el " futuro ".

Para visualizar esto, creé un gráfico simple que muestra una serie de commits (burbujas):

Log-History para demostrar el seguimiento de un objeto en Git

  • Las burbujas rojas son commits que no contienen esa class
  • Las burbujas verdes son commits que contienen la class (en cierto punto en el time (1.1), el object fue agregado y permaneció en la base de código por un time)
  • La burbuja azul (4) es la confirmación, donde se eliminó la class (y la que me interesa, porque podría contener el motivo, por qué se eliminó o dónde se movió).
  • La burbuja verde con el borde amarillo es la confirmación, donde encontré la class.

Ahora de una manera visual: quiero que la línea verde ARRIBA hasta el azul (1.2 -> 3 -> 4), mientras que cuando pago el estado 1.2 y logging de llamadas, solo obtengo 1.2 -> 1.1.

No hay una manera fácil de rastrear el futuro, pero puede search a través de la historia para encontrar dónde desapareció.

Si tiene una ruta para el file, Git: ¿Cómo search un file eliminado en el historial de confirmación del proyecto? muestra cómo localizar el compromiso:

git log -- path/to/file 

Esto mostrará todas las confirmaciones tocando ese file. Luego puede examinar el primer compromiso enumerado para ver si se trata de una eliminación o un movimiento.

Si el nombre del file es distintivo y cree que puede haber cambiado de nombre:

 git log --name-only 

Puede search a través de estos resultados el nombre del file.

    Intereting Posts