Come posso navigare al primo commit in un repository Github?


152

In GitHub, c'è un modo semplice per passare al primo commit di un grande progetto open source?

Ad oggi il progetto ha oltre 13.000 impegni. Non voglio premere il pulsante "Vecchio" nella pagina della cronologia del commit centinaia e centinaia di volte per accedere al commit iniziale (o al primo commit).


2
Hai preso in considerazione la clonazione del repository per esplorarlo localmente?
jub0bs,


Approfondimenti / Collaboratori mostra l'intera gamma di commit alla filiale principale.
ToolmakerSteve

Risposte:


102

Clonare il repository, aprire con la riga di comando ed eseguire $ git log --reverse

Questo mostrerà i commit in ordine inverso.

Quindi puoi visualizzarlo su github una volta che hai l'ID (Nome oggetto) del primo commit ... qualcosa come ... https://github.com/UserName/Repo/commit/6a5ace7b941120db5d2d50af6321770ddad4779e


16
Non riesco a credere a quanto biz strano e complicato ho dovuto setacciare per trovare una risposta semplice e ragionevole. Grazie.
Sammitch,

7
Un accenno, aggiungerei l' onelinearg a questo - in git log --reverse --onelinemodo che tu possa vederlo come un elenco
rynmrtn

E se stai usando il prompt dei comandi di Windows e vuoi evitare di essere risucchiato in Vim (?), Usa git log --reverse --oneline | more. moreComportamento standard , Ctrl + C per uscire.
Sinjai,

82

Non esiste un'interfaccia utente ovvia per farlo, ma c'è un modo per costruire l'URL giusto per andare alla pagina uno del registro di commit.

Supponiamo di voler trovare il primo commit del repository dotnet / coreclr . Prima di tutto prendi nota del numero di commit nel repository: attualmente è 16.634. Ora vai all'elenco dei commit e fai clic su "Vecchio" una volta . L'URL sarà simile a questo:https://github.com/dotnet/coreclr/commits/master?after=872095a758a3a6191a9798c94a98e8d1e16b2254+34

Notare la +34parte. Questo è il numero di commit saltati. Cambialo in 16.634 meno 1 meno 35 per pagina, che ci dà questo URL , che ti porta direttamente alla prima pagina della cronologia del commit di coreclr.


4
Bene, ho creato un bookmarklet per farlo. github.com/bpceee/oldest
bpceee,

Questa è la buona risposta per visualizzare il commit iniziale nell'elenco di commit del progetto.
COil

Ahah questo è molto più veloce di quello suggerito nella risposta accettata ;-)
aderchox

46

Febbraio 2015: in GitHub , c'è un modo semplice per passare al primo commit di un grande progetto open source?

Sì, adesso c'è! (Significato: senza clonare il repository e applicare git lognel clone locale)

Da gennaio 2017, hai " Naviga più velocemente nella cronologia dei file con una migliore visualizzazione delle colpe " su GitHub.

Sia che tu stia eseguendo il debug di una regressione o cercando di capire in che modo un codice abbia avuto la sua forma attuale, spesso vorrai vedere come appariva un file prima di una particolare modifica.
Con una migliore visualizzazione della colpa, puoi facilmente vedere come una parte del tuo file si è evoluta nel tempo senza visualizzare la cronologia completa del file .

Ecco una demo che riporta al commit più vecchio originale del repository git / git stesso (47K + commit) ... in tre clic!

demo git / git

Il trucco qui è scegliere un file che probabilmente sarà trovato nel primo (o molto presto) commit, come un README.md.


8
In genere funziona, ma presuppone che tu sappia quali file esistevano al momento della creazione del repository e che puoi trovare linee che non sono cambiate molte volte dall'inizio.
Wilfred Hughes,

1
@WilfredHughes Ho usato questo metodo per andare indietro di 32.986 commit al primo commit che sembra essere un uovo di Pasqua divertente. In questo caso, il readme non è tornato indietro fino all'inizio, quindi ho ripetuto il processo premendo Browse filese aprendo la colpa per un altro file.
Andrewarchi,

@andrewarchi Ben fatto. In realtà i primi commit sono easter-uova: stackoverflow.com/a/21981037/6309
VonC

Lo considererei una "soluzione alternativa", mentre la risposta di @schmalzy è più diretta.
Jimmy Bosse,

@JimmyBosse E ' non è una soluzione. È la risposta alla domanda originale. Un git logfunziona solo se si clona il (potenzialmente enorme) pronti contro termine a livello locale. Se vuoi " navigare " fino al pugno commesso, questo è tutto.
VonC,

37

Volevo vedere uno dei primi commit del progetto nodejs . Ho fatto quanto segue.

  1. Visitato il sito nodejs . Quindi osservato che il numero totale di commit è circa ventitre mila (23652 per la precisione) in questo momento.

inserisci qui la descrizione dell'immagine

  1. Successivamente ho cliccato su quel link di commit e che mi ha portato a https://github.com/nodejs/node/commits/master come mostrato di seguito.

inserisci qui la descrizione dell'immagine

  1. Ora ho scorrere verso il basso e ho trovato i pulsanti più recenti e più vecchi. Il pulsante Più recente è disabilitato. Ho fatto clic sul pulsante più vecchio e mi è venuto in https://github.com/nodejs/node/commits/master?after=de37ba34c5d6f3a2d18daf482f850be8fddb4621+34

  2. Ora osserva che l'URL ha +34. Ora l'ho cambiato in 23000 (poiché il numero di commit che avevo osservato è 23000). Quindi il nuovo URL che ho provato è

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

  1. Adesso ci sono quasi. Con qualche altra iterazione o con clic di pulsanti più vecchi ho raggiunto il punto desiderato.

2
È un duplicato della risposta 2 risposte sopra la tua? stackoverflow.com/a/49647826
Edric,

2
è una risposta duplicata, ma mi piacciono le immagini, la rende più accattivante.
winner_joiner

7

Puoi passare al primo commit di un repository GitHub usando il bookmarklet init .

DENTRO

Un bookmarklet per portarti rapidamente al primo commit di un repository.

Panoramica

Essere in grado di passare rapidamente al commit più vecchio in un repository è abbastanza utile. Vai avanti e trascina il bookmarklet (link) sulla barra dei segnalibri e fai clic ogni volta che desideri passare al primo commit di un repository.

uso

Vai a qualsiasi pagina di destinazione di un determinato repository (e.g. like the one you're on)e fai clic sul bookmarklet, che ti porterà alla prima pagina (commit iniziale). Per impostazione predefinita, tiene traccia del masterramo, ma se modifichi nella branchpagina di destinazione, passerà al primo commit di quel ramo.

Estratto da README.md su GitHub


Dichiarazione di non responsabilità : ho fornito un piccolo aggiornamento Leggimi per l'inizializzazione pochi minuti prima di pubblicare questa risposta.


7

Puoi accedere alla prima pagina di commit con la seguente, che tengo come frammento negli strumenti di sviluppo di 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
Grazie! Non sapevo che avresti potuto salvare frammenti in quel modo, quindi il tuo post è stato utile su due dimensioni.
bmacnaughton,

6

Devi usare il git log --reversecomando di git.

Ciò restituirà la cronologia dei commit per il repository specificato in ordine inverso (dal più vecchio al più recente).

Quindi, con l'aiuto di un po 'di sedmagia, potresti avere qualcosa come la data del primo commit (che è quello che ho visto di cui ho sempre avuto bisogno per me stesso).

git log --reverse | sed -n 3p

Alla fine, potresti voler automatizzare anche questo (dal momento che è per lo più noioso digitare il comando o semplicemente impossibile ricordarlo), quindi uno script di shell come questo potrebbe venire in soccorso.



0

Questo link fornisce un modo per l'interfaccia utente per farlo su GitHub. Sommario:

  1. Scheda "Approfondimenti"

  2. Scheda Rete (lato sinistro)

  3. Maiusc + <-

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.