Wie navigiere ich zum frühesten Commit in einem Github-Repository?


151

Gibt es in GitHub eine einfache Möglichkeit, zum frühesten Commit eines großen Open Source-Projekts zu navigieren?

Das Projekt hat bis heute über 13.000 Commits. Ich möchte nicht hunderte Male auf die Seite "Älter" auf der Seite "Festschreibungsverlauf" klicken müssen, um zum anfänglichen Festschreiben (oder ersten Festschreiben) zu gelangen.


2
Haben Sie darüber nachgedacht, das Repository zu klonen, um es stattdessen lokal zu navigieren?
Jub0bs


Insights / Contributors zeigt die gesamte Bandbreite der Commits für die Hauptniederlassung.
ToolmakerSteve

Antworten:


101

Klonen Sie das Repository, öffnen Sie es mit der Befehlszeile und führen Sie es aus $ git log --reverse

Dies zeigt die Commits in umgekehrter Reihenfolge an.

Dann können Sie es auf github anzeigen, sobald Sie die ID (Objektname) des ersten Commits haben ... so etwas wie ... https://github.com/UserName/Repo/commit/6a5ace7b941120db5d2d50af6321770ddad4779e


15
Ich kann nicht glauben, wie viel seltsames, überkompliziertes Geschäft ich durchsehen musste, um eine einfache, vernünftige Antwort zu finden. Vielen Dank.
Sammitch

7
Ein Tweak, ich würde das onelineArgument hinzufügen - git log --reverse --onelinedamit Sie es als Liste
anzeigen können

Und wenn Sie die Windows-Eingabeaufforderung verwenden und vermeiden möchten, in Vim (?) Gesaugt zu werden, verwenden Sie git log --reverse --oneline | more. Standardverhalten more, Strg + C zum Beenden.
Sinjai

81

Es gibt keine offensichtliche Benutzeroberfläche, um dies zu tun, aber es gibt eine Möglichkeit, die richtige URL zu erstellen, um zur ersten Seite des Festschreibungsprotokolls zu gelangen.

Angenommen, wir möchten das erste Commit des Dotnet / Coreclr-Repositorys finden . Notieren Sie sich zunächst die Anzahl der Commits im Repository: Derzeit sind es 16.634. Gehen Sie nun in der Liste der Commits, und klicken Sie auf „Older“ einmal . Die URL lautet ungefähr so:https://github.com/dotnet/coreclr/commits/master?after=872095a758a3a6191a9798c94a98e8d1e16b2254+34

Beachten Sie das +34Teil. So viele Commits werden übersprungen. Ändern Sie dies in 16.634 minus 1 minus 35 pro Seite. Dadurch erhalten wir diese URL , mit der Sie direkt zur ersten Seite des Coreclr-Commit-Verlaufs gelangen.


4
Schön, dass ich dafür ein Lesezeichen erstellt habe. github.com/bpceee/oldest
bpceee

Dies ist die gute Antwort, um das anfängliche Commit in der Projekt-Commit-Liste anzuzeigen.
COil

Haha das ist viel schneller als in der akzeptierten Antwort vorgeschlagen ;-)
aderchox

46

Feb. 2015: Gibt es in GitHub eine einfache Möglichkeit, zum frühesten Commit eines großen Open Source-Projekts zu navigieren ?

Ja, das gibt es jetzt! (Bedeutung: ohne das Repo zu klonen und git logim lokalen Klon anzuwenden )

Seit Januar 2017 haben Sie auf GitHub " Schnelleres Navigieren im Dateiverlauf mit verbesserter Schuldansicht ".

Unabhängig davon, ob Sie eine Regression debuggen oder versuchen zu verstehen, wie ein Code seine aktuelle Form angenommen hat, möchten Sie häufig vor einer bestimmten Änderung sehen, wie eine Datei aussieht.
Mit der verbesserten Schuldansicht können Sie leicht sehen, wie sich ein Teil Ihrer Datei im Laufe der Zeit entwickelt hat, ohne den vollständigen Verlauf der Datei anzuzeigen .

Hier ist eine Demo, die zum ursprünglichen ältesten Commit des Git / Git- Repo selbst zurückkehrt (47K + Commits) ... mit drei Klicks!

Demo Git / Git

Der Trick dabei ist, eine Datei auszuwählen, die wahrscheinlich im ersten (oder sehr frühen) Commit gefunden wird, wie z README.md.


8
Dies funktioniert im Allgemeinen, setzt jedoch voraus, dass Sie wissen, welche Dateien zum Zeitpunkt der Erstellung des Repos vorhanden waren, und dass Sie Zeilen finden können, die sich seit ihrer Einführung nicht oft geändert haben.
Wilfred Hughes

1
@WilfredHughes Ich habe diese Methode für Go verwendet, um 32.986 Commits zum ersten Commit zurückzuspringen, das zufällig ein lustiges Osterei ist. In diesem Fall ging die Readme- Browse filesDatei erst am Anfang zurück, daher wiederholte ich den Vorgang, indem ich die Schuld für eine andere Datei drückte und öffnete.
Andrewarchi

@andrewarchi Schön gemacht. Tatsächlich sind die ersten Commits Ostereier: stackoverflow.com/a/21981037/6309
VonC

Ich würde dies als "Problemumgehung" betrachten, während die Antwort von @schmalzy direkter ist.
Jimmy Bosse

@ JimmyBosse Es ist keine Problemumgehung . Es ist die Antwort auf die ursprüngliche Frage. A git logfunktioniert nur, wenn Sie das (möglicherweise riesige) Repo lokal klonen. Wenn Sie zum ersten Commit " navigieren " möchten , dann ist dies das Richtige.
VonC

37

Ich wollte eines der frühesten Commits von nodejs Projekt sehen. Ich habe folgendes getan.

  1. Besuchte die Site Nodejs . Dann wurde festgestellt, dass die Gesamtzahl der Commits zu diesem Zeitpunkt etwa 23.000 (genauer gesagt 23652) beträgt.

Geben Sie hier die Bildbeschreibung ein

  1. Als nächstes klickte ich auf diesen Commit-Link und führte mich zu https://github.com/nodejs/node/commits/master, wie unten gezeigt.

Geben Sie hier die Bildbeschreibung ein

  1. Jetzt nach unten gescrollt und ich fand neuere und ältere Schaltflächen. Die Schaltfläche Neuere ist deaktiviert. Ich habe auf die ältere Schaltfläche geklickt und bin zu https://github.com/nodejs/node/commits/master?after=de37ba34c5d6f3a2d18daf482f850be8fddb4621+34 gelangt

  2. Beachten Sie nun, dass die URL +34 hat. Jetzt habe ich das auf 23000 geändert (da ich 23000 Commits beobachtet habe). Die neue URL, die ich ausprobiert habe, ist also

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

  1. Jetzt bin ich fast da. Mit ein paar weiteren Iterationen oder durch ältere Tastenklicks erreichte ich, wo ich will.

2
Ist dies ein Duplikat der Antwort 2 Antworten über Ihrer? stackoverflow.com/a/49647826
Edric

2
ist doppelte Antwort, aber ich mag die Bilder, es macht es ansprechender.
Winner_joiner

7

Sie können mit dem Init-Lesezeichen zum ersten Commit eines GitHub-Repositorys navigieren .

DRIN

Ein Lesezeichen, mit dem Sie schnell zum ersten Commit eines Repos gelangen.

Überblick

Es ist sehr hilfreich, schnell zum ältesten Commit in einem Repo navigieren zu können. Ziehen Sie das Lesezeichen (Link) auf Ihre Lesezeichenleiste und klicken Sie darauf, wann immer Sie zum ersten Commit eines Repos wechseln möchten.

Verwendung

Gehen Sie zur Zielseite eines bestimmten Repos (e.g. like the one you're on)und klicken Sie auf das Lesezeichen, um zur ersten Seite zu gelangen (anfängliches Festschreiben). Standardmäßig wird der masterZweig verfolgt, aber wenn Sie den branchauf der Zielseite ändern , wird zum ersten Commit dieses Zweigs gewechselt.

Von README.md auf GitHub abgerufen


Haftungsausschluss : Ich habe ein kleines Readme-Update beigesteuert, um einige Minuten vor dem Posten dieser Antwort zu initiieren .


7

Sie können die erste Seite mit Commits mit den folgenden Informationen aufrufen, die ich als Ausschnitt in den Chrome-Entwicklungstools aufbewahre.

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
Danke dir! Ich wusste nicht, dass Sie solche Schnipsel speichern können, daher war Ihr Beitrag in zwei Dimensionen hilfreich.
Bmacnaughton

6

Sie müssen den git log --reverseBefehl git verwenden.

Dies gibt den Verlauf der Commits für das angegebene Repo in umgekehrter Reihenfolge zurück (älteste bis neueste).

Dann sedkönnten Sie mit Hilfe von etwas Magie so etwas wie das Datum des ersten Commits haben (was ich gesehen habe, was ich immer für mich selbst gebraucht habe).

git log --reverse | sed -n 3p

Letztendlich möchten Sie dies möglicherweise auch automatisieren (da es meistens entweder langweilig ist, den Befehl einzugeben, oder einfach unmöglich, sich daran zu erinnern), sodass ein Shell-Skript wie dieses möglicherweise Abhilfe schafft.



0

Dieser Link bietet eine UI-Möglichkeit, dies auf GitHub zu tun. Zusammenfassung:

  1. Registerkarte "Einblicke"

  2. Registerkarte "Netzwerk" (linke Seite)

  3. Umschalt + <-

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.