GitHub: ricerca nelle versioni precedenti dei file


98

So che usando GitHub posso cercare tra tutte le versioni correnti dei miei file in un repository. Tuttavia, vorrei anche cercare tra le versioni precedenti dei miei file repo. Ad esempio, diciamo, avevo una funzione chiamata get_info () nel mio codice, ma l'ho cancellata diverse versioni fa, è possibile cercare get_info e trovare il codice. Se non è possibile utilizzare GitHub, è possibile dalla riga di comando di git?

MODIFICARE

Grazie a @Mark Longair per aver mostrato come farlo dalla riga di comando di git. Se non è possibile in GitHub, sarebbe un'ottima funzionalità da avere.

Risposte:


121

Al momento, non credo che sia possibile cercare all'interno della cronologia completa del codice di un repository sul sito Web GitHub: il più vicino è semplicemente cercare all'interno del codice corrente di un repository con l'opzione "ricerca codice" in questa pagina .

Tuttavia, dalla riga di comando, è possibile trovare tutti i commit che hanno introdotto o rimosso le righe menzionate get_infocon l' -Sopzione a git log. per esempio:

git log -Sget_info -p

(nb non dovrebbe esserci spazio tra -Se il termine di ricerca)

(nota anche: per cercare più di una parola, circondali '):

git log -S'get info' -p

Quindi, come minimo dovrebbe trovare il commit in cui la funzione è stata introdotta per la prima volta e quello che l'ha rimossa. Ho aggiunto il in -pmodo da poter vedere anche le patch - se molti commit introducono modifiche che menzionano la funzione che potrebbe essere utile. Se la funzione fosse solo su un altro ramo potrebbe anche essere utile da utilizzare --allper cercare tutti i rami.

Jefromi sottolinea in un commento qui sotto che git 1.7.4 introdurrà l' -Gopzione come alternativa - questa modifica è riassunta in un recente post sul blog di Junio ​​Hamano (manutentore di git): http://gitster.livejournal.com/48191.html


2
Sì, so che posso cercare nei commenti, ma per quanto riguarda il codice?
normski

10
L'opzione -S fa guardare nel codice - che trova ogni commit in cui get_infoè contenuto nel diff che il commit introduce. Potresti essere confuso con l' --grepopzione, che cerca nei messaggi di registro.
Mark Longair

2
@normski: E le versioni recenti di git hanno aggiunto l' -Gopzione simile , che accetta un'espressione regolare invece di una stringa fissa.
Cascabel

@Jefromi: grazie per averlo detto - l'ho aggiunto alla risposta, spero che sia OK.
Mark Longair

2
@Anthony Damico: sì, basta citare la stringa di ricerca, ad esempiogit log -S'get info' -p
Mark Longair
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.