2011-01-16 15 views
71

Sé que usando GitHub puedo buscar en todas las versiones actuales de mis archivos en un repositorio. Sin embargo, también me gustaría buscar a través de 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é varias versiones atrás, ¿es posible buscar get_info y encontrar el código? Si no es posible usar GitHub, ¿es posible desde la línea de comando git?GitHub: buscando en versiones anteriores de archivos

EDITAR

Gracias a @ Marcos Longair para mostrar cómo esto se puede hacer desde la línea de comandos de Git. Si no es posible en GitHub sería una gran característica.

Respuesta

80

Actualmente, no creo que sea posible buscar dentro del historial completo del código de un repositorio en el sitio web 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 this page.

Sin embargo, desde la línea de comandos, puede encontrar las confirmaciones que introdujeron o eliminaron las líneas que mencionan get_info con la opción -S en git log. por ejemplo:

git log -Sget_info -p 

(nb no debería haber ningún espacio entre -S y el término de búsqueda)

(también en cuenta: a buscar más de una palabra, sonido envolvente en '):

git log -S'get info' -p 

Por lo tanto, como mínimo debería encontrar el compromiso donde se introdujo la función por primera vez y la que lo eliminó. Agregué el -p para que también pueda ver los parches, si muchas confirmaciones introdujeron cambios que mencionan la función que puede ser útil. Si la función solo estaba en otra rama, también podría ser útil usar --all para buscar en todas las ramas.

Jefromi señala en un comentario más abajo que Git 1.7.4 introducirá la opción -G como alternativa - este cambio se resume en un reciente post de Junio ​​Hamano (mantenedor GIT): http://gitster.livejournal.com/48191.html

+2

Sí, lo sé Puedo buscar comentarios, pero ¿qué hay de buscar el código? – normski

+4

La opción -S * no * mira en el código - encuentra cualquier confirmación donde 'get_info' está contenida en el diff que introduce el compromiso. Es posible que se confunda con la opción '--grep', que busca en los mensajes de registro. –

+1

Ah sí, lo siento. Gracias se ve bien. – normski

Cuestiones relacionadas