2010-04-23 12 views
38

Necesito buscar el historial de un archivo específico en un repositorio de git para encontrar una línea que ya no está. El mensaje de confirmación no tendrá ningún texto relevante para buscar. ¿Qué comando uso?¿Cómo busco el historial de git para una línea desaparecida?

Más detalles: esta es la historia de mi lista de tareas pendientes de nuestro software de seguimiento de tareas no estelar. Lo he estado guardando durante dos años porque no hay suficiente información guardada para mí en el software. Mis mensajes de compromiso usualmente solo tienen los identificadores de tareas, y lo que tengo que hacer es encontrar una tarea cerrada por tema, no por número. Sí, la solución real es un mejor software de seguimiento de tareas, pero eso está completamente fuera de mis manos.

Respuesta

74

¡Este es un trabajo para el pico!

Desde la página de manual git-registro:

-S<string>

buscar las diferencias que introducen o eliminar una instancia de <string>. Tenga en cuenta que esto es diferente de la cadena que simplemente aparece en la salida de diff; ver la entrada de piquetas en gitdiffcore (7) para más detalles.

Por supuesto, puede utilizar otras opciones para limitar la búsqueda, por ejemplo:

git log -Sfoobar --since=2008.1.1 --until=2009.1.1 -- path_containing_change 

¿No es increíblemente útil?

+9

Creo que esta característica solo debería convertir a las personas a git. +1 –

+1

Esto parece increíble, pero ¿cómo funciona la parte path_containing_change? Cuando lo agrego no obtengo ningún resultado, pero sin él veo las confirmaciones relevantes. – Ibrahim

+1

@Ibrahim Posiblemente sea un error ... Veo el mismo comportamiento que tú. Normalmente pruebo cosas, pero esto fue hace dos años, así que no recuerdo con certeza si lo probé o no, ya que por la sintaxis normal para git-log (y la página de manual), esperaba que trabajo. En general, agregar un argumento de ruta como ese lo restringe a confirmaciones que afectaron esa ruta. – Cascabel

0

¿Qué tal git log --stat | grep 'filename' para empezar a reducirlo?

+1

No veo ninguna indicación de que el OP conozca el nombre del archivo. Buen enfoque en general, sin embargo. Por supuesto, puedes hacer 'git log filename'. – Cascabel

Cuestiones relacionadas