GitHub: Durchsuchen älterer Versionen von Dateien

97

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 hatte ich früher eine Funktion namens get_info () in meinem Code, habe sie aber vor einigen Versionen gelöscht. Ist es möglich, nach get_info zu suchen und den Code zu finden? Wenn es mit GitHub nicht möglich ist, ist es über die git-Befehlszeile möglich?

BEARBEITEN

Vielen Dank an @Mark Longair, der gezeigt hat, wie dies über die git-Befehlszeile möglich ist. Wenn es in GitHub nicht möglich ist, wäre es eine großartige Funktion.

normenki
quelle

Antworten:

121

Derzeit glaube ich nicht, dass es möglich ist, innerhalb des vollständigen Verlaufs des Codes eines Repositorys auf der Github-Website zu suchen. Am nächsten ist es, nur im aktuellen Code eines Repositorys mit der Option "Codesuche" auf dieser Seite zu suchen .

In der Befehlszeile finden Sie jedoch alle Commits, die Zeilen get_infomit der -SOption to eingeführt oder entfernt haben git log. z.B:

git log -Sget_info -p

(nb zwischen -Sund dem Suchbegriff sollte kein Leerzeichen stehen )

(Beachten Sie auch: Um nach mehr als einem Wort zu suchen, umgeben Sie '):

git log -S'get info' -p

Zumindest sollte dies das Commit finden, bei dem die Funktion zuerst eingeführt wurde, und dasjenige, das sie entfernt hat. Ich habe das hinzugefügt, -pdamit Sie auch die Patches sehen können - wenn viele Commits Änderungen eingeführt haben, die die Funktion erwähnen, die hilfreich sein kann. Wenn sich die Funktion nur in einem anderen Zweig befand, kann es auch nützlich sein, --allalle Zweige zu durchsuchen.

Jefromi weist in einem Kommentar unten darauf hin, dass Git 1.7.4 die -GOption als Alternative einführen wird - diese Änderung wird in einem kürzlich veröffentlichten Blog-Beitrag von Junio ​​Hamano (Git-Betreuer) zusammengefasst: http://gitster.livejournal.com/48191.html

Mark Longair
quelle
2
Ja, ich weiß, dass ich nach Kommentaren suchen kann, aber was ist mit der Suche im Code?
Normenki
10
Die Option -S sieht im Code aus - sie findet alle Commits, get_infodie in dem durch das Commit eingeführten Diff enthalten sind. Möglicherweise werden Sie mit der --grepOption verwechselt, mit der die Protokollnachrichten durchsucht werden.
Mark Longair
2
@normski: Und neuere Versionen von git haben die ähnliche -GOption hinzugefügt , die einen regulären Ausdruck anstelle einer festen Zeichenfolge verwendet.
Cascabel
@Jefromi: Danke, dass du das erwähnt hast - ich habe das der Antwort hinzugefügt, hoffe, das ist in Ordnung.
Mark Longair
2
@ Anthony Damico: Ja, zitieren Sie einfach die Suchzeichenfolge, zBgit log -S'get info' -p
Mark Longair