2011-01-16 10 views
71

Ich weiß, dass ich mit GitHub alle aktuellen Versionen meiner Dateien in einem Repo durchsuchen kann. Ich möchte aber auch die älteren Versionen meiner Repo-Dateien durchsuchen. Zum Beispiel, ich hatte eine Funktion namens get_info() in meinem Code, aber löschte es vor mehreren Versionen, ist es möglich, nach get_info zu suchen und den Code zu finden. Wenn es mit GitHub nicht möglich ist, ist es möglich, über die Git-Befehlszeile?GitHub: Suche in älteren Versionen von Dateien

EDIT

Dank @ Mark Longair zu zeigen, wie diese aus dem git Kommandozeile ausgeführt werden kann. Wenn es in GitHub nicht möglich ist, wäre es ein großartiges Feature.

Antwort

80

Derzeit glaube ich nicht, dass es möglich ist, innerhalb des vollständigen Verlaufs eines Repository-Codes auf der github-Website zu suchen - am nächsten ist die Suche im aktuellen Code eines Repositorys mit der Option "code search" unter this page.

In der Befehlszeile können Sie jedoch alle Übertragungen finden, die die Zeile get_info mit der Option -S zu git log hinzugefügt oder entfernt haben. zB:

git log -Sget_info -p 

(nb sollte es keinen Raum zwischen -S und der Suchbegriff sein)

(auch beachten Sie: für mehr als ein Wort zu suchen, Surround in '):

git log -S'get info' -p 

Also, zumindest sollte das Commit finden, wo die Funktion zuerst eingeführt wurde und das, das es entfernt hat. Ich habe die -p hinzugefügt, so dass Sie auch die Patches sehen können - wenn viele Commits Änderungen eingeführt, die die Funktion erwähnt, die hilfreich sein können. Wenn die Funktion nur in einem anderen Zweig war, könnte es auch nützlich sein, --all zu verwenden, um alle Zweige zu suchen.

Jefromi Punkte unter den git 1.7.4 in einem Kommentar aus der -G Option als Alternative einführen - diese Änderung in einer aktuellen Blog-Post von Junio ​​Hamano zusammengefasst (git Betreuer): http://gitster.livejournal.com/48191.html

+2

Ja, ich weiß, Ich kann Kommentare suchen, aber was ist mit der Suche im Code? – normski

+4

Die -S-Option * sucht * im Code - sie findet alle Commits, bei denen "get_info" im diff enthalten ist, das durch das Commit eingeführt wird. Sie werden möglicherweise mit der Option "--grep" verwirrt, die die Protokollmeldungen durchsucht. –

+1

Ah ja, tut mir leid. Danke sieht gut aus. – normski

Verwandte Themen