it-swarm.com.de

Wie suche ich auf GitHub nach einer Commit-Nachricht?

Nicht in einem Git-Repo , sondern GitHub speziell - wie suche ich nur die Commit-Nachrichten eines bestimmten Repos/Zweigs?

319
ripper234

Ab 2017 ist diese Funktion in GitHub selbst enthalten.

Die von ihnen verwendete Beispielsuche ist repo:torvalds/linux merge:false crypto policy

enter image description here gIF von https://github.com/blog/2299-search-commit-messages

60
vartec

Früher war dies möglich, aber Github hat diese Funktion Mitte 2013 entfernt. Um dies vor Ort zu erreichen, können Sie Folgendes tun:

git log -g --grep=STRING

(Verwenden Sie die Option -g, wenn Sie nach anderen Zweigen und Dangling Commits suchen möchten.)

-g, --walk-reflogs
    Instead of walking the commit ancestry chain, walk reflog entries from
    the most recent one to older ones. 
203
dsldsl

Update (2017/01/05):
Github hat ein Update veröffentlicht, mit dem Sie jetzt in Commit-Nachrichten über die Benutzeroberfläche suchen können. Weitere Informationen finden Sie unter Blogpost .


Ich hatte die gleiche Frage und habe gestern jemanden @Github kontaktiert:

Da die Suchmaschine auf ElasticSearch umgestellt wurde, ist es nicht möglich, über die Github-Benutzeroberfläche nach Commit-Nachrichten zu suchen. Diese Funktion steht jedoch auf der Wunschliste des Teams.

Leider gibt es derzeit kein Veröffentlichungsdatum für diese Funktion.

132
oktopus

Die kurze Antwort ist, dass Sie Commit-Nachrichten nicht direkt auf github.com der Website suchen können. Zur Zeit empfehlen wir die lokale git grep Lösung haben andere in diesem Thread vorgeschlagen.

Zu einem bestimmten Zeitpunkt bot GitHub ein git grep-artige Suche über Commit-Nachrichten für ein einzelnes Repository. Leider hat dieser Ansatz einen Denial-of-Service zur Folge, der einen Dateiserver unzugänglich machen könnte. Aus diesem Grund haben wir git grep suchen.

Nach aktuellen Schätzungen liegt die Anzahl der Commits in GitHub bei etwa 80 Milliarden. Obwohl die Google-Ingenieure hinter uns lachen, ist dies eine ziemlich große Anzahl von Dokumenten, die in ElasticSearch gespeichert werden sollen. Wir würden diesen Datensatz gerne durchsuchbar machen, aber es ist kein triviales Projekt.

56
TwP

Dies wurde von GitHub entfernt. Ich benutze:

$git log --all --oneline | grep "search query"

enter image description here

Sie können auch nach Autor filtern:

$git log --all --oneline --author=rickhanlonii | grep "search query"
44
Rick Hanlon II

Ab der Hilfeseite Suchcode scheint dies noch nicht möglich zu sein.

Sie können in Ihrem Repo nach Text suchen, einschließlich der Möglichkeit, Dateien oder Pfade für die Suche auszuwählen, aber Sie können nicht angeben, dass Sie in Commits suchen möchten.

Vielleicht Schlagen Sie ihnen dies vor ?

21
Jon Cairns

Sie können dies mit Repos tun, die von Google gecrawlt wurden (Ergebnisse variieren von Repo zu Repo).

Durchsuche alle Filialen aller gecrawlten Repos nach "Lizenz ändern"

Website "Lizenz ändern": https://github.com/*/*/commits

Durchsuche die Hauptniederlassung aller gecrawlten Repos nach "Lizenz ändern"

Website "Lizenz ändern": https://github.com/*/*/commits/master

Durchsuche die Hauptniederlassung aller gecrawlten Twitter-Repos nach "Lizenz ändern"

Website "Lizenz ändern": https://github.com/Twitter/*/commits/master

In allen Filialen von Twitter/some_project repo nach "change license" suchen

Website "Lizenz ändern": https://github.com/Twitter/some_project/commits

19
technosaurus

pdate Januar 2017 (zwei Jahre später):

Sie können jetzt nach Commit-Nachrichten suchen ! (noch nur in der master branch)

https://cloud.githubusercontent.com/assets/1387653/21622772/61a5c7a6-d1bc-11e6-809d-134936a4ac05.gif


Februar 2015: Ich bin mir nicht sicher, ob dies jemals möglich sein könnte, wenn man bedenkt, dass die aktuelle Suchinfrastruktur auf Elasticsearch (eingeführt im Januar 201 ) basiert.

Als Antwort "Aus glaubwürdigen und/oder offiziellen Quellen schöpfen" hier ein Interview mit den GitHub-Verantwortlichen für die Einführung von Elasticsearch bei GitHub (August 2013)

Tim Pease: Es gibt zwei Dokumenttypen: Eine ist eine Quellcodedatei und die andere ist ein Repository. Die Art und Weise, wie Git funktioniert, ist, dass Sie Commits haben und für jedes Commit einen Zweig haben. Repository-Dokumente protokollieren das letzte Commit für das bestimmte indizierte Repository. Wenn ein Benutzer ein neues Commit an Github überträgt, wird dieses Repository-Dokument von elasticsearch abgerufen. Wir sehen dann das zuletzt indizierte Commit und erhalten eine Liste aller Dateien, die zwischen diesem letzten Push und dem, was wir zuvor indiziert haben, geändert, hinzugefügt oder gelöscht wurden. Dann können wir fortfahren und nur die Dokumente aktualisieren, die geändert wurden. Wir müssen nicht bei jedem Push den gesamten Quellcodebaum neu indizieren.

Andrew Cholakian: Ihr indiziert also nur den Master-Zweig, nehme ich an.

Tim Pease: Richtig. Es ist nur der Leiter der Hauptniederlassung, den Sie dort abrufen werden, und das sind immer noch viele Daten, zwei Milliarden Dokumente, 30 Terabyte.

Andrew Cholakian: Das ist unglaublich groß.

[...]

Tim Pease: Mit der Indizierung des Quellcodes auf Push handelt es sich um einen Selbstheilungsprozess.
Wir haben das Repository-Dokument, das den letzten indizierten Commit verfolgt. Wenn wir es verpasst haben, verpassen wir zufällig drei Commits, bei denen diese Jobs fehlschlagen, das nächste Commit, das eingeht. Wir sehen uns immer noch den Unterschied zwischen dem vorherigen Commit, das wir indiziert haben, und dem, das wir mit diesem neuen Push sehen.
Du machst ein git diff und Sie erhalten alle Dateien, die aktualisiert, gelöscht oder hinzugefügt wurden. Sie können einfach sagen: „Okay, wir müssen diese Dateien entfernen. Wir müssen diese Dateien hinzufügen und all das. "Es ist selbstheilend und das ist der Ansatz, den wir mit so ziemlich der gesamten Architektur verfolgt haben.

Das alles bedeutet nicht alles die Zweige von alles das Repo würde mit diesem Ansatz indiziert.
Eine globale Suche nach Commit-Nachrichten ist derzeit nicht verfügbar.
Und Tim Pease selbst bestätigt Commit-Nachrichten werden nicht indiziert .

Beachten Sie, dass es nicht unmöglich ist, eine eigene Elasticsearch-lokale Indizierung eines lokalen Klons zu erhalten: siehe " Durchsuchen eines Git-Repositorys mit ElasticSearch "

Für ein bestimmtes Repo ist es jedoch am einfachsten, es zu klonen und Folgendes zu tun:

git log --all --grep='my search'

(Weitere Optionen unter " Wie durchsuche ich ein Git-Repository per Commit-Nachricht? ")

14
VonC

Seitdem dies von Github entfernt wurde, verwende ich gitk unter Linux, um dies zu tun.

Wechseln Sie vom Terminal in Ihr Repository und geben Sie gitk ein.

In der Mitte der Benutzeroberfläche befindet sich ein Suchfeld. Es bietet eine gute Auswahl an Filtern:

search bar

Bereich - Enthält, berührt Pfade, fügt Zeichenfolgen hinzu/entfernt Zeichenfolgen und ändert die Zeilenübereinstimmung

Übereinstimmungsart - Exact/IgnCase/Regexp

Suchfelder - Alle Felder/Überschrift/Kommentare/Committer

7
Kirk

Dies funktioniert gut in Eclipse, bis Github die Funktion hinzufügt:

enter image description here

https://wiki.Eclipse.org/EGit/User_Guide#Searching_for_commits

6
chrismarx

Wenn Sie unter Ubuntu (oder anderen Unix-Betriebssystemen) arbeiten und eine lokale Version des Repos haben, sollten Sie dieses einfache Shell-Skript ausprobieren, das ich geschrieben habe, um die GitHub-Seiten für alle Commits zu öffnen, die Ihrem Suchbegriff in neuen Registerkarten in entsprechen Ihr Standardbrowser:

#!/bin/sh
for sha1 in $(git rev-list HEAD -i --grep="$1"); do
    python -mwebbrowser https://github.com/RepoOwnerUserName/RepoName/commit/$sha1 >/dev/null 2>/dev/null
done

Ersetzen Sie einfach https://github.com/RepoOwnerUserName/RepoName/ Durch die tatsächliche Github-URL Ihres Repos, speichern Sie das Skript irgendwo (z. B. als githubsearch.sh), Machen Sie es ausführbar (chmod +x githubsearch.sh) Und fügen Sie dann den folgenden Alias ​​zu Ihrem hinzu Datei ~/.bashrc:

alias githubsearch='/path/to/githubsearch.sh'

Dann tun Sie dies einfach von überall in Ihrem Git-Repo am Terminal:

githubsearch "what you want to search for"

bei Commits, die mit Ihrem Suchbegriff (ohne Berücksichtigung der Groß- und Kleinschreibung) übereinstimmen, werden die entsprechenden GitHub-Seiten in Ihrem Browser geöffnet. (Seien Sie gewarnt, dass, wenn Ihr Suchbegriff in Hunderten von Commits erscheint, dies Ihren Browser zum Absturz bringen und die CPU Ihres PCs für eine Weile belasten kann.)

Ich habe dies nur unter Ubuntu getestet und weiß nicht genug über Shell-Skripte, um zu wissen, ob dies unter anderen Unix-basierten Betriebssystemen funktioniert. Insbesondere weiß ich nicht, ob etwas, das ich hier verwendet habe, Bash-spezifisch ist. Fühlen Sie sich frei zu kommentieren oder zu bearbeiten, um Kompatibilitätsinformationen hinzuzufügen.

4
Mark Amery

Geben Sie ab Mitte 2019 einfach in das Suchfeld oben links ein, wonach Sie suchen möchten, und klicken Sie dann auf "Commits".

enter image description here

0
M3RS