Nicht in einem Git-Repository , sondern speziell in GitHub - wie suche ich nur die Commit-Nachrichten eines bestimmten Repositorys / Zweigs?
328
Nicht in einem Git-Repository , sondern speziell in GitHub - wie suche ich nur die Commit-Nachrichten eines bestimmten Repositorys / Zweigs?
Antworten:
Ab 2017 ist es eine Funktionalität, die in GitHub selbst enthalten ist .
Die von ihnen verwendete Beispielsuche ist
repo:torvalds/linux merge:false crypto policy
quelle
Früher war dies möglich, aber GitHub hat diese Funktion Mitte 2013 entfernt. Um dies lokal zu erreichen, können Sie Folgendes tun:
(Verwenden Sie die
-g
Flagge, wenn Sie andere Zweige und baumelnde Commits durchsuchen möchten.)quelle
-g
Flag für die meisten Anwendungsfälle weg. Ich habe nicht zu viel darüber nachgedacht, aber mit-g
scheint die Suche nur einen Monat zurück zu gehen.git log -g --grep=fix
während in derdevelop
Filiale eines Repos, das ~ 8000 Commits über zwei Jahre hat, nur bis zum 2. Februar zurückreicht.-g
Flagge zurückreichen .Update (05.01.2017):
GitHub hat ein Update veröffentlicht, mit dem Sie jetzt in Commit-Nachrichten über die Benutzeroberfläche suchen können. Weitere Informationen finden Sie im Blog-Beitrag .
Ich hatte die gleiche Frage und kontaktierte gestern jemanden GitHub:
Da sie ihre Suchmaschine auf Elasticsearch umgestellt haben, 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.
quelle
Die kurze Antwort lautet: Sie können Commit-Nachrichten nicht direkt auf der Website github.com suchen. Vorerst empfehlen wir den Einheimischen
git grep
Lösung, die andere in diesem Thread vorgeschlagen haben.Zu einem bestimmten Zeitpunkt bot GitHub eine
git grep
Stilsuche über Commit-Nachrichten für ein einzelnes Repository an. Leider hat dieser Ansatz einen Denial-of-Service aufgedeckt, der einen Dateiserver unzugänglich machen könnte. Aus diesem Grund haben wir entferntgit grep
Suche .Nach aktuellen Schätzungen auf der Rückseite des Umschlags liegt die Anzahl der Commits in GitHub bei etwa 80 Milliarden. Obwohl Google-Ingenieure hinter unserem Rücken lachen, ist dies eine ziemlich große Anzahl von Dokumenten, die in ElasticSearch gespeichert werden müssen. Wir würden diesen Datensatz gerne durchsuchbar machen, aber es ist kein triviales Projekt.
quelle
git diff's
(dh dem Inhalt derDies wurde von GitHub entfernt. Ich benutze:
Sie können auch nach Autor filtern:
quelle
Auf der Hilfeseite zum Suchen von Code scheint dies noch nicht möglich zu sein.
Sie können in Ihrem Repository nach Text suchen, einschließlich der Möglichkeit, Dateien oder Pfade für die Suche auszuwählen. Sie können jedoch nicht angeben, dass Sie in Commits suchen möchten.
Vielleicht ihnen das vorschlagen ?
quelle
Sie können dies mit Repositorys tun, die von Google gecrawlt wurden (Ergebnisse variieren von Repository zu Repository).
Durchsuchen Sie alle Zweige aller gecrawlten Repositorys nach "Lizenz ändern".
Durchsuchen Sie den Hauptzweig aller gecrawlten Repositorys nach "Lizenz ändern":
Durchsuchen Sie den Hauptzweig aller gecrawlten Twitter-Repositorys nach "Lizenz ändern".
Durchsuchen Sie alle Zweige des Twitter / some_project-Repositorys nach "Lizenz ändern".
quelle
Update Januar 2017 (zwei Jahre später):
Sie können jetzt nach Commit-Nachrichten suchen ! (immer noch nur in der Hauptniederlassung)
Februar 2015: Ich bin mir nicht sicher, ob dies angesichts der aktuellen Basis der Suchinfrastruktur auf Elasticsearch (eingeführt im Januar 2013) jemals möglich sein könnte ) .
Als Antwort "aus glaubwürdigen und / oder offiziellen Quellen" hier ein Interview mit den GitHub-Mitarbeitern, die für die Einführung von Elasticsearch bei GitHub verantwortlich sind (August 2013).
Das alles bedeutet, dass nicht alle Zweige des gesamten Repos mit diesem Ansatz indiziert würden.
Eine globale Suche nach Commit-Nachrichten ist derzeit nicht verfügbar.
Und Tim Pease selbst bestätigt, dass Commit-Nachrichten nicht indiziert sind .
Beachten Sie, dass es nicht unmöglich ist, eine eigene lokale Elasticsearch-Indizierung eines lokalen Klons zu erhalten: siehe " Durchsuchen eines Git-Repositorys mit ElasticSearch "
Für ein bestimmtes Repo bleibt es jedoch am einfachsten, es zu klonen und Folgendes zu tun:
(Weitere Optionen unter " So suchen Sie ein Git-Repository nach Commit-Nachricht? ")
quelle
Da dies aus GitHub entfernt wurde, verwende ich dies unter
gitk
Linux.Gehen Sie vom Terminal zu Ihrem Repository und geben Sie ein
gitk
.In der Mitte der GUI befindet sich ein Suchfeld. Es bietet eine gute Auswahl an Filtern:
Bereich - Pfade enthalten, berühren, Zeichenfolge hinzufügen / entfernen, Zeilenübereinstimmung ändern
Übereinstimmungstyp - Exact / IgnCase / Regexp
Suchfelder - Alle Felder / Überschrift / Kommentare / Committer
quelle
Dies funktioniert gut in Eclipse , bis GitHub die Funktion hinzufügt:
EGit / Benutzerhandbuch, Suche nach Commits
quelle
Wenn Sie eine lokale Version des Repositorys haben, können Sie dieses grobe Shell-Skript ausprobieren, das ich geschrieben habe, um die GitHub-Seiten für alle Commits zu öffnen, die Ihrem Suchbegriff entsprechen, und zwar in neuen Registerkarten in Ihrem Standardbrowser:
Ersetzen Sie einfach durch
https://github.com/RepoOwnerUserName/RepoName/
die tatsächliche GitHub-URL Ihres Repositorys, speichern Sie das Skript irgendwo (z. B. alsgithubsearch.sh
, machen Sie es ausführbar (chmod +x githubsearch.sh
) und fügen Sie dann den folgenden Alias zu Ihrer~/.bashrc
Datei hinzu:Führen Sie dann von überall in Ihrem Git-Repository aus Folgendes am Terminal aus:
Bei Commits, die Ihrem Suchbegriff (ohne Berücksichtigung der Groß- und Kleinschreibung) entsprechen, 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 verschlingen kann.)
quelle
Geben Sie ab Mitte 2019 einfach das, wonach Sie suchen möchten, in das Suchfeld oben links ein und klicken Sie dann auf "Commits".
quelle