Jak wyszukać komunikat commit na GitHub?

Nie w Git repo, ale raczej w GitHub konkretnie - jak przeszukać tylko komunikaty commit konkretnej repo/gałęzi?

 297
Author: Community, 2013-08-08

11 answers

[1]} od 2017 roku jest to funkcjonalność zawarta w samym Githubie .

Przykładowe wyszukiwanie używane przez nich to repo:torvalds/linux merge:false crypto policy

Tutaj wpisz opis obrazka gif z https://github.com/blog/2299-search-commit-messages

 46
Author: vartec,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-24 13:20:50

Kiedyś byłeś w stanie to zrobić, ale Github usunął tę funkcję w połowie 2013 roku. Aby to osiągnąć lokalnie, możesz zrobić:

git log -g --grep=STRING

(Użyj flagi-g, jeśli chcesz przeszukać inne gałęzie i zwisające commity.)

-g, --walk-reflogs
    Instead of walking the commit ancestry chain, walk reflog entries from
    the most recent one to older ones. 
 198
Author: dsldsl,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-23 19:59:26

Aktualizacja (2017/01/05):
Github opublikował aktualizację, która umożliwia teraz wyszukiwanie w komunikatach commit z poziomu interfejsu użytkownika. Zobacz blog post aby uzyskać więcej informacji.


Miałem to samo pytanie i skontaktowałem się z kimś @Github wczoraj:

Ponieważ przełączyli wyszukiwarkę na ElasticSearch, nie jest możliwe wyszukiwanie komunikatów commit za pomocą interfejsu Github. Ale ta funkcja jest na liście życzeń zespołu.

Niestety nie ma premiera tej funkcji już teraz.

 132
Author: oktopus,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-04 23:03:27

Krótka odpowiedź brzmi: nie można przeszukiwać wiadomości commit bezpośrednio na github.com strona internetowa. Na razie polecamy lokalne rozwiązanie git grep, które zaproponowali inni w tym wątku.

W pewnym momencie GitHub oferował styl git grep przeszukiwania komunikatów commit dla pojedynczego repozytorium. Niestety, takie podejście ujawniło odmowę usługi, która może sprawić, że serwer plików stanie się niedostępny. Z tego powodu usunęliśmy git grep wyszukiwanie.

Aktualny back-of-the envelope szacunki podają liczbę commitów w Githubie około 80 miliardów. Chociaż inżynierowie Google śmieją się za naszymi plecami, jest to dość duża liczba dokumentów do przechowywania w ElasticSearch. Chcielibyśmy, aby ten zbiór danych można było przeszukiwać, ale nie jest to trywialny projekt.

 56
Author: TwP,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-13 17:21:42

To zostało usunięte z Githuba. Używam:

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

Tutaj wpisz opis obrazka

Możesz również filtrować według autora:
$git log --all --oneline --author=rickhanlonii | grep "search query"
 44
Author: Rick Hanlon II,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-13 00:51:32

Ze strony pomocy na szukanie kodu wydaje się, że nie jest to jeszcze możliwe.

Możesz wyszukiwać tekst w repo, w tym możliwość wyboru plików lub ścieżek do przeszukiwania, ale nie możesz określić, że chcesz wyszukiwać w zatwierdzeniach.

Może zasugeruj im to ?

 21
Author: Jon Cairns,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-08 09:42:39

Można to zrobić z repo, które zostały indeksowane przez google (wyniki różnią się od repo do repo)

Przeszukaj wszystkie gałęzie wszystkich indeksowanych transakcji repo w poszukiwaniu "Zmień licencję"

Strona" Zmień licencję": https://github.com / * / * / commits

Przeszukaj główną gałąź wszystkich indeksowanych transakcji repo w poszukiwaniu "Zmień licencję"

Strona" Zmień licencję": https://github.com/ * / * / commits / master

Przeszukaj główną gałąź wszystkich indeksowanych repozytoriów Twittera dla "Zmień licencję"

Strona"Zmień licencję": https://github.com/twitter/ * / commits / master

Przeszukaj wszystkie oddziały Twittera / some_project repo w poszukiwaniu "Zmień licencję"

Strona"Zmień licencję": https://github.com/twitter/some_project/commits

 19
Author: technosaurus,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-17 22:52:59

Aktualizacja styczeń 2017 (dwa lata później):

Możesz teraz wyszukiwać wiadomości commit ! (nadal tylko w gałęzi master)

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


Luty 2015: nie jestem pewien, czy kiedykolwiek będzie to możliwe, biorąc pod uwagę obecną bazę infrastruktury wyszukiwania na Elasticsearch (wprowadzona w styczniu 2013).

Jako odpowiedź "czerpiąc z wiarygodnych i / lub oficjalnych źródeł", oto Wywiad zrobiony z GitHub osoby odpowiedzialne za wprowadzenie Elasticsearch na GitHub (Sierpień 2013)

Tim Pease: mamy dwa typy dokumentów: jeden jest plikiem kodu źródłowego, a drugi jest repozytorium. Sposób w jaki działa git polega na tym, że masz commity i masz gałąź dla każdego commita. Dokumenty repozytorium śledzą najnowszy commit dla tego konkretnego repozytorium, które zostało zindeksowane. Gdy użytkownik wypycha nowy commit do Githuba, wyciągamy ten dokument z repozytorium elasticsearch. Następnie widzimy ostatnio zindeksowany commit, a następnie otrzymujemy listę wszystkich plików, które zostały zmodyfikowane, dodane lub usunięte między ostatnim push a tym, co wcześniej zindeksowaliśmy. Wtedy możemy przejść do przodu i po prostu zaktualizować te dokumenty, które zostały zmienione. Nie musimy ponownie indeksować całego drzewa kodu źródłowego za każdym razem, gdy ktoś naciska.

Więc, wy tylko indeksujecie, zakładam, gałąź master. Tim Pease: Zgadza się. Dostanie się tam tylko szef Oddziału głównego, a to i tak dużo danych, dwa miliardy dokumentów, 30 terabajtów. Andrew Cholakian: to jest niesamowicie ogromne.
[...]

Tim Pease: z indeksowaniem kodu źródłowego na push, jest to proces samoleczenia.
Mamy dokument repozytorium, który śledzi ostatni zindeksowany commit. Jeśli przegapiliśmy, to po prostu przegapiliśmy trzy commity tam, gdzie te zadania zawodzą, następny commit, który pojawia się, wciąż patrzymy na różnicę między poprzednim commitem, który zindeksowaliśmy, a tym, który widzimy w nowym push.
Wykonujesz git diff i dostajesz wszystkie pliki, które zostały zaktualizowane, usunięte lub dodane. Możesz po prostu powiedzieć: "musimy usunąć te pliki. Musimy dodać te pliki i tak dalej."To samoleczenie i takie podejście przyjęliśmy z prawie całą architekturą.

To wszystko znaczy niewszystkie gałęzie wszystkie repo byłyby indeksowane z takim podejściem.
Globalne wyszukiwanie komunikatów commit nie jest na razie dostępne.
I sam Tim Pease potwierdza komunikaty commit nie są indeksowane .

Zauważ, że nie jest niemożliwe uzyskanie własnego lokalnego indeksowania klonu elasticsearch: zobacz " przeszukiwanie repozytorium git za pomocą ElasticSearch "

Ale dla konkretnego repo najłatwiej jest go sklonować i wykonać:

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

(Więcej opcji na " jak przeszukiwać repozytorium Git za pomocą komunikatu commit?")

 14
Author: VonC,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:47:05

Ponieważ to zostało usunięte z Githuba, używam gitk na Linuksie, aby to zrobić.

Z terminala przejdź do repozytorium i wpisz gitk

W środku gui, jest pole wyszukiwania. Zapewnia dobry wybór filtrów:

pasek wyszukiwania

Scope-zawierający, dotykający ścieżek, dodający / usuwający łańcuch, zmieniający dopasowanie linii

Typ dopasowania-Exact/IgnCase / Regexp

Pola wyszukiwania-Wszystkie Pola/nagłówek/Komentarze/Committer

 7
Author: Kirk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-22 18:22:56

To działa dobrze z poziomu eclipse, dopóki github nie doda funkcji:

Tutaj wpisz opis obrazka

Https://wiki.eclipse.org/EGit/User_Guide#Searching_for_commits

 6
Author: chrismarx,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-24 20:02:39

Jeśli pracujesz na Ubuntu (lub innych systemach uniksowych) i masz lokalną wersję repo, możesz spróbować tego prostego skryptu powłoki, który napisałem, aby otworzyć strony GitHub dla wszystkich commitów pasujących do twojego hasła w nowych kartach w domyślnej przeglądarce:

#!/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

Po prostu zastąp https://github.com/RepoOwnerUserName/RepoName/ rzeczywistym adresem URL Twojego repo, Zapisz gdzieś skrypt (np. jako githubsearch.sh, wykonywalny (chmod +x githubsearch.sh), a następnie dodaj następujący alias do pliku ~/.bashrc:

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

Wtedy, zewsząd w Twoim Git repo, po prostu zrób to na terminalu:

githubsearch "what you want to search for"

I wszelkie commity, które pasują do twojego (bez rozróżniania wielkości liter) hasła będą miały odpowiednie strony GitHub otwarte w Twojej przeglądarce. (Pamiętaj, że jeśli wyszukiwany termin pojawi się w setkach commitów, może to spowodować awarię przeglądarki i zjedzenie procesora komputera na chwilę.)

Testowałem to tylko na Ubuntu i nie wiem wystarczająco dużo o skryptach powłoki, aby wiedzieć, czy to będzie działać na innych systemach operacyjnych opartych na Uniksie-szczególnie nie wiem, czy cokolwiek, czego tu używałem, jest specyficzne dla Basha. Możesz komentować lub edytować, aby dodać informacje o kompatybilności.

 4
Author: Mark Amery,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-01 23:06:20