GitHub: búsqueda en versiones anteriores de archivos

98

Sé que al usar GitHub puedo buscar en todas las versiones actuales de mis archivos en un repositorio. Sin embargo, también me gustaría buscar en las versiones anteriores de mis archivos de repositorio. Por ejemplo, digamos, solía tener una función llamada get_info () en mi código, pero la eliminé hace varias versiones, ¿es posible buscar get_info y encontrar el código? Si no es posible usar GitHub, ¿es posible desde la línea de comandos de git?

EDITAR

Gracias a @Mark Longair por mostrar cómo se puede hacer esto desde la línea de comandos de git. Si no es posible en GitHub, sería una gran característica tener.

normski
fuente

Respuestas:

121

Actualmente, no creo que sea posible buscar dentro del historial completo del código de un repositorio en el sitio web de github; lo más cercano es buscar dentro del código actual de un repositorio con la opción "búsqueda de código" en esta página .

Sin embargo, desde la línea de comandos, puede encontrar cualquier confirmación que haya introducido o eliminado líneas que mencionen get_infocon la -Sopción a git log. p.ej:

git log -Sget_info -p

(nb no debe haber espacio entre -S y el término de búsqueda)

(nota también: para buscar más de una palabra, rodee '):

git log -S'get info' -p

Entonces, como mínimo, debería encontrar la confirmación donde se introdujo por primera vez la función y la que la eliminó. Agregué el -ppara que también pueda ver los parches, si muchas confirmaciones introdujeron cambios que mencionaron la función que puede ser útil. Si la función estaba solo en otra rama, también podría ser útil usarla --allpara buscar todas las ramas.

Jefromi señala en un comentario a continuación que git 1.7.4 introducirá la -Gopción como alternativa; este cambio se resume en una publicación de blog reciente de Junio ​​Hamano (mantenedor de git): http://gitster.livejournal.com/48191.html

Mark Longair
fuente
2
Sí, sé que puedo buscar comentarios, pero ¿qué hay de buscar el código?
normski
10
La opción -S hace mirada en el código - que encuentra ningún commit donde get_infoestá contenido en el diff que la introduce confirmación. Es posible que se confunda con la --grepopción, que busca en los mensajes de registro.
Mark Longair
2
@normski: Y las versiones recientes de git han agregado la -Gopción similar , que toma una expresión regular en lugar de una cadena fija.
Cascabel
@Jefromi: gracias por mencionar eso, lo agregué a la respuesta, espero que esté bien.
Mark Longair
2
@Anthony Damico: sí, solo cite la cadena de búsqueda, por ejemplogit log -S'get info' -p
Mark Longair