Jak przejść do najwcześniejszego zatwierdzenia w repozytorium Github?


152

Czy w GitHub istnieje łatwy sposób na przejście do najwcześniejszego zatwierdzenia dużego projektu open source?

Na dzień dzisiejszy projekt ma ponad 13 000 zatwierdzeń. Nie chcę setki i setki razy wciskać przycisku „Starsze” na stronie historii zmian, aby dostać się do pierwszego zatwierdzenia (lub pierwszego zatwierdzenia).


2
Czy zamiast tego rozważałeś sklonowanie repozytorium, aby nawigować po nim lokalnie?
jub0bs


Insights / Contributors pokazuje pełen zakres zatwierdzeń do gałęzi głównej.
ToolmakerSteve

Odpowiedzi:


102

Sklonuj repozytorium, otwórz za pomocą wiersza poleceń i uruchom $ git log --reverse

Spowoduje to wyświetlenie zatwierdzeń w odwrotnej kolejności.

Następnie możesz wyświetlić go na githubie, gdy masz ID (nazwę obiektu) pierwszego zatwierdzenia ... coś w rodzaju ... https://github.com/UserName/Repo/commit/6a5ace7b941120db5d2d50af6321770ddad4779e


16
Nie mogę uwierzyć, jak wiele dziwnych, zbyt skomplikowanych spraw musiałem przeszukać, aby znaleźć jedną prostą, rozsądną odpowiedź. Dzięki.
Sammitch

7
Jedna poprawka, dodałbym onelinedo tego argument - git log --reverse --onelineżebyście mogli zobaczyć to jako listę
rynmrtn

A jeśli używasz wiersza poleceń Windows i chcesz uniknąć wciągnięcia Vima (?), Użyj git log --reverse --oneline | more. Standardowe morezachowanie, Ctrl + C, aby zakończyć.
Sinjai,

82

Nie ma oczywistego interfejsu użytkownika, który mógłby to zrobić, ale istnieje sposób na skonstruowanie właściwego adresu URL, aby przejść do pierwszej strony dziennika zatwierdzeń.

Załóżmy, że chcemy znaleźć pierwsze zatwierdzenie repozytorium dotnet / coreclr . Najpierw zanotuj liczbę zatwierdzeń w repozytorium: obecnie jest to 16 634. Teraz przejdź do listy zatwierdzeń i kliknij raz „Starsze” . Adres URL będzie wyglądał mniej więcej tak:https://github.com/dotnet/coreclr/commits/master?after=872095a758a3a6191a9798c94a98e8d1e16b2254+34

Zwróć uwagę na +34część. Tak wiele zatwierdzeń jest pomijanych. Zmień to na 16,634 minus 1 minus 35 na stronę, co da nam ten adres URL , który przeniesie Cię prosto do pierwszej strony historii zatwierdzeń coreclr.


4
Świetnie, utworzyłem w tym celu bookmarklet. github.com/bpceee/oldest
bpceee

To jest dobra odpowiedź, aby wyświetlić początkowe zatwierdzenie na liście zatwierdzeń projektu.
COil

Haha, to jest o wiele szybsze niż sposób sugerowany w zaakceptowanej odpowiedzi ;-)
aderchox

46

Luty 2015: Czy w GitHub jest łatwy sposób na nawigację do najwcześniejszego zatwierdzenia dużego projektu open source?

Tak, teraz jest! (Znaczenie: bez klonowania repozytorium i stosowania git logw lokalnym klonie)

Od stycznia 2017 r. Masz „ Szybsze nawigowanie po historii plików dzięki ulepszonemu widokowi adnotacji ” na GitHub.

Niezależnie od tego, czy debugujesz regresję, czy próbujesz zrozumieć, w jaki sposób jakiś kod uzyskał swój obecny kształt, często będziesz chciał zobaczyć, jak wyglądał plik przed określoną zmianą.
Dzięki ulepszonemu widokowi winy możesz łatwo zobaczyć, jak dowolna część pliku ewoluowała w czasie, bez przeglądania pełnej historii pliku .

Oto demo przywracające pierwotne najstarsze zatwierdzenie samego repozytorium git / git (ponad 47 000 zatwierdzeń) ... za pomocą trzech kliknięć!

demo git / git

Sztuczka polega na tym, aby wybrać plik, który prawdopodobnie znajdzie się w pierwszym (lub bardzo wczesnym) zatwierdzeniu, na przykład plik README.md.


8
Zwykle działa, ale zakłada, że ​​wiesz, które pliki istniały, gdy utworzono repozytorium, i że możesz znaleźć wiersze, które nie zmieniły się wiele razy od momentu powstania.
Wilfred Hughes

1
@WilfredHughes Użyłem tej metody dla Go, aby przeskoczyć wstecz 32,986 zatwierdzeń do pierwszego zatwierdzenia, co jest zabawnym easter eggiem . W tym przypadku Browse filesplik readme nie wrócił aż do początku, więc powtórzyłem proces, naciskając i otwierając plik winy za inny plik.
andrewarchi

@andrewarchi Dobra robota. Właściwie kilka pierwszych zatwierdzeń to pisanki: stackoverflow.com/a/21981037/6309
VonC

Uznałbym to za „obejście”, podczas gdy odpowiedź @schmalzy jest bardziej bezpośrednia.
Jimmy Bosse

@JimmyBosse To nie jest obejście. To odpowiedź na pierwotne pytanie. A git logdziała tylko wtedy, gdy lokalnie sklonujesz (potencjalnie duże) repozytorium. Jeśli chcesz „ nawigować ” do pierwszego zatwierdzenia, to jest to.
VonC

37

Chciałem zobaczyć jeden z najwcześniejszych commity projektu nodejs . Zrobiłem co następuje.

  1. Odwiedziłem stronę nodejs . Następnie zaobserwowano, że całkowita liczba zatwierdzeń wynosi w tym momencie około dwudziestu trzech tysięcy (dokładnie 23652).

wprowadź opis obrazu tutaj

  1. Następnie kliknąłem ten link zatwierdzający, który zaprowadził mnie do https://github.com/nodejs/node/commits/master, jak pokazano poniżej.

wprowadź opis obrazu tutaj

  1. Teraz przewinęliśmy w dół i znalazłem przyciski Nowsze i Starsze. Przycisk Nowsze jest wyłączony. Kliknąłem starszy przycisk i zaprowadziło mnie to do https://github.com/nodejs/node/commits/master?after=de37ba34c5d6f3a2d18daf482f850be8fddb4621+34

  2. Teraz zauważ, że adres URL ma +34. Teraz zmieniłem to na 23000 (ponieważ liczba zatwierdzeń, które zaobserwowałem, wynosi 23000). Tak więc nowy adres URL, który wypróbowałem, to

https://github.com/nodejs/node/commits/master?after=de37ba34c5d6f3a2d18daf482f850be8fddb4621+23000

  1. Teraz prawie jestem na miejscu. Po kilku kolejnych iteracjach lub starszych kliknięciach przycisków dotarłem tam, gdzie chcę.

2
Czy to jest duplikat odpowiedzi 2 odpowiedzi powyżej Twojej? stackoverflow.com/a/49647826
Edric

2
jest zduplikowaną odpowiedzią, ale podobają mi się obrazy, dzięki czemu są bardziej atrakcyjne.
zwycięzca_joiner

7

Możesz przejść do pierwszego zatwierdzenia repozytorium GitHub za pomocą bookmarkletu init .

W TYM

Bookmarklet aby szybko dostać się do pierwszego popełnić z repo.

Przegląd

Możliwość szybkiego przejścia do najstarszego zatwierdzenia w repozytorium jest bardzo pomocna. Śmiało i przeciągnij bookmarklet (link) na pasek zakładek i kliknij go, kiedy chcesz przejść do pierwszego zatwierdzenia repozytorium.

Stosowanie

Przejdź do strony docelowej dowolnego repozytorium (e.g. like the one you're on)i kliknij bookmarklet, który przeniesie Cię na pierwszą stronę (wstępne zatwierdzenie). Domyślnie śledzi mastergałąź, ale jeśli zmienisz branchna stronie docelowej, przejdzie do pierwszego zatwierdzenia tej gałęzi.

Pobrane z README.md na GitHub


Uwaga : przesłałem małą aktualizację pliku Readme, aby zainicjować kilka minut przed opublikowaniem tej odpowiedzi.


7

Możesz dostać się do pierwszej strony zatwierdzeń za pomocą następujących, które przechowuję jako fragment w narzędziach programistycznych Chrome.

function githubFirstCommitsPage() {
  let el = document.querySelector('.repository-content');
  let base = el.querySelector('a[data-pjax]').href;
  let count = el.querySelector('.commits .num')
    .textContent
    .trim()
    .replace(/[^\d\.\-]/g, "");
  count = count-36;
  let sha = el.querySelector('.commit-tease-sha')
    .href
    .split('/');
  sha = sha[sha.length-1];
  window.location = `${base}?after=${sha}+${count}`;   
}

githubFirstCommitsPage();

1
Dziękuję Ci! Nie wiedziałem, że możesz zapisać takie fragmenty, więc twój post był pomocny w dwóch wymiarach.
bmacnaughton

6

Musisz użyć git log --reversepolecenia git.

Spowoduje to zwrócenie historii zatwierdzeń dla określonego repozytorium w odwrotnej kolejności (od najstarszej do najnowszej).

Następnie, z pomocą jakiejś sedmagii, możesz mieć coś w rodzaju daty pierwszego zatwierdzenia (widziałem, że zawsze potrzebowałem dla siebie).

git log --reverse | sed -n 3p

Ostatecznie możesz chcieć zautomatyzować to również (ponieważ wpisywanie polecenia jest przeważnie nudne lub po prostu niemożliwe do zapamiętania), więc skrypt powłoki taki jak ten może przyjść na ratunek.



0

Ten link umożliwia interfejsowi użytkownika, aby to zrobić w GitHub. Podsumowanie:

  1. Karta „Statystyki”

  2. Karta sieciowa (lewa strona)

  3. Shift + <-

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.