Znajdź zatwierdzenie na GitHub, biorąc pod uwagę skrót zatwierdzenia

286

Jestem dość nowy w Github i napotkałem problem amatorski.

Zostałem poproszony o sprawdzenie kodu i otrzymałem hash zatwierdzenia, ale próbowałem szukać w Git, czy mogę wyszukiwać za pomocą skrótów, ale nic nie mogę znaleźć.

Czy jest jakiś sposób, aby znaleźć zmieniony kod tylko za pomocą skrótu zatwierdzenia?

dopplesoldner
źródło
46
Wydaje mi się to całkowicie dziwne, że github nie rozpoznaje skrótów podczas wyszukiwania i pokazuje zatwierdzenie, jeśli istnieje takie pasujące hasło.
Craig Ringer,
W rzeczywistości @CraigRinger, wyszukiwanie github będzie pasować do skrótów, jeśli wystąpią w żądaniu ściągnięcia . Rzeczywiście, jeśli chcesz, możesz przeszukać cały github w poszukiwaniu siedmioznakowego prefiksu skrótu. Ale musi to być żądanie ściągnięcia, a nie tylko każde zatwierdzenie.
Todd Owen
4
@ToddOwen Które jest miłe, ale nie o to chodzi. Powinien pasować do skrótów zatwierdzania w repozytorium podczas wyszukiwania w repozytorium, jest naprawdę głupi, że tak nie jest.
Craig Ringer
2
@CraigRinger W końcu robi to teraz! Zobacz moją nową odpowiedź .
Todd Owen

Odpowiedzi:

378

Adres URL formularza https://github.com/<owner>/<project>/commit/<hash>pokaże zmiany wprowadzone w tym zatwierdzeniu. Oto na przykład najnowsza poprawka, którą zrobiłem w jednym z moich projektów w GitHub:

https://github.com/jerith666/git-graph/commit/35e32b6a00dec02ae7d7c45c6b7106779a124685

Możesz także skrócić skrót do dowolnego unikalnego prefiksu, na przykład:

https://github.com/jerith666/git-graph/commit/35e32b


Wiem, że właśnie zapytałeś o GitHub, ale dla kompletności: Jeśli masz sprawdzone repozytorium, z wiersza poleceń możesz osiągnąć to samo z dowolnymi z tych poleceń (tutaj też działają unikalne prefiksy):

git show 35e32b6a00dec02ae7d7c45c6b7106779a124685
git log -p -1 35e32b6a00dec02ae7d7c45c6b7106779a124685

Uwaga: Jeśli zbytnio skrócisz skrót zatwierdzenia, wiersz polecenia wyświetli pomocny komunikat ujednoznaczniający, ale GitHub zwróci tylko 404.

Matt McHenry
źródło
natknąłem się na to, próbując prześledzić asercję w języku mongo, i stwierdziłem, że istnieje podobny wzorzec adresu URL, aby wyświetlić określony plik, biorąc pod uwagę skrót zatwierdzenia: github.com/$owner/$project/blob/$hash/path /to/file.ext - np. github.com/mongodb/mongo/blob/…
RubyT TuesdayDONO
W tym: git log -p -1 35e32b6a00dec02ae7d7c45c6b7106779a124685The -1jest konieczne, ponieważ w przeciwnym razie byłoby pokazać wszystkie Olders zobowiązuje; dobrze wiedzieć, że możesz użyć czterech początkowych liczb skrótu (minimum w moich testach), ponieważ nie ma automatycznego uzupełniania skrótu; i nie można określić oddział takiego: git log master -p -1 35e3. Wersja Git: 1.7.9.5.
Rafael Barros,
Jeszcze jedno obs, ale jedno bardzo ważne: znowu nie można określić gałęzi, ale automatycznie przeszukuje ona lokalne i zdalne gałęzie, gdy podajesz skrót. Tak, tak, możesz wyszukać określony zdalny plik różnicowy przed połączeniem z repozytorium lokalnym za pomocą wiersza polecenia.
Rafael Barros,
1
W przypadku, gdy ktoś się zastanawia (byłem!), Działa to również z pierwszymi 8 skrótami zarówno na github: github.com/jerith666/git-graph/commit/35e32b6a, jak i w wierszu poleceń:git log -p -1 35e32b6a
SimplGy
7
To trochę głupie, że interfejs użytkownika nie czyni tego łatwiejszym niż jest ... Mam nadzieję, że prośba o funkcję to ułatwi.
ocroquette,
49

Wyświetl pojedyncze zatwierdzenie:
https://github.com/<user>/<project>/commit/<hash>

Wyświetl dziennik:
https://github.com/<user>/<project>/commits/<hash>

Zobacz pełne repo:
https://github.com/<user>/<project>/tree/<hash>

<hash> może mieć dowolną długość, o ile jest wyjątkowa.

qwertzguy
źródło
1
jeśli długość wynosi co najmniej 7 znaków, jest w porządku
Kasun Siyambalapitiya
3
Brak minimalnej długości skrótu zatwierdzenia wynosi 4 znaki (ponownie, o ile jest unikalny w całym repozytorium)
qwertzguy
21

Możliwość wyszukiwania zatwierdzeń została niedawno dodana do GitHub.

Aby wyszukać skrót, wpisz co najmniej pierwsze 7 znaków w polu wyszukiwania. Następnie na stronie wyników kliknij kartę „Zatwierdzenia”, aby zobaczyć pasujące zatwierdzenia (ale zwykle tylko w domyślnej gałęzi master), lub kartę „Problemy”, aby zobaczyć żądania ściągnięcia zawierające zatwierdzenie.

Aby być bardziej precyzyjnym, możesz dodać hash:prefiks do wyszukiwania, ale tak naprawdę nie jest to konieczne.

Istnieje również interfejs API REST (w momencie pisania jest jeszcze w wersji zapoznawczej).

Todd Owen
źródło
2
Jestem zaskoczony, że tak naprawdę działa w ten sposób. To nie jest intuicyjne. Domyślnie Github wyświetla zakładkę „Kod”, oczywiście bez żadnych wyników. Czy nie powinna wyświetlać domyślnie jedynej zakładki z jakimikolwiek wynikami?
Summerian
Żeby było jasne, jeśli masz własną instalację github w przedsiębiorstwie, możesz znaleźć dowolne zatwierdzenie w dowolnym repozytorium, szukając go w ten sposób: https://YourGithubDomain/search?q=YOUR_COMMIT_HASH&type=Commits Pamiętaj, że wypróbowałem to również na Github i tam też działało, np. https://github.com/search?q=38db172d13962ea177c00c9a3b4b3169b317e94b&type=Commits
Brad Parks