Comment accéder au premier commit dans un référentiel Github?

153

Dans GitHub, existe-t-il un moyen simple d'accéder au premier commit d'un grand projet open source?

Le projet compte plus de 13 000 engagements à ce jour. Je ne veux pas avoir à appuyer sur le bouton "Older" de la page d'historique des commit des centaines et des centaines de fois pour accéder au commit initial (ou premier commit).

jdw
la source
2
Avez-vous plutôt envisagé de cloner le référentiel pour y naviguer localement?
jub0bs
Essayez de trouver le premier commit
mja
Insights / Contributors affiche une gamme complète de commits vers la branche principale.
ToolmakerSteve

Réponses:

102

Clonez le référentiel, ouvrez avec la ligne de commande et exécutez $ git log --reverse

Cela affichera les validations dans l'ordre inverse.

Ensuite, vous pouvez le voir sur github une fois que vous avez l'ID (nom de l'objet) du premier commit ... quelque chose comme ... https://github.com/UserName/Repo/commit/6a5ace7b941120db5d2d50af6321770ddad4779e

Schmalzy
la source
16
Je ne peux pas croire à quel point les affaires bizarres et compliquées j'ai dû passer au crible pour trouver une réponse simple et raisonnable. Merci.
Sammitch
7
Un tweak, j'ajouterais l' onelineargument à ceci - git log --reverse --onelineafin que vous puissiez le voir sous forme de liste
rynmrtn
Et si vous utilisez l'invite de commande Windows et que vous souhaitez éviter d'être aspiré dans Vim (?), Utilisez git log --reverse --oneline | more. moreComportement standard , Ctrl + C pour quitter.
Sinjai
83

Il n'y a pas d'interface utilisateur évidente pour le faire, mais il existe un moyen de construire la bonne URL pour accéder à la première page du journal de validation.

Supposons que nous voulions trouver le premier commit du référentiel dotnet / coreclr . Prenez d'abord note du nombre de commits dans le référentiel: il est actuellement de 16 634. Allez maintenant à la liste des commits, et cliquez une fois sur "Plus ancien" . L'URL sera quelque chose comme ceci:https://github.com/dotnet/coreclr/commits/master?after=872095a758a3a6191a9798c94a98e8d1e16b2254+34

Remarquez la +34pièce. C'est le nombre de commits ignorés. Changez cela en 16 634 moins 1 moins 35 par page, ce qui nous donne cette URL , qui vous amène directement à la première page de l'historique des validations coreclr.

Roman Starkov
la source
4
Bien, j'ai créé un bookmarklet pour ce faire. github.com/bpceee/oldest
bpceee
C'est la bonne réponse pour afficher le commit initial dans la liste de commit du projet.
COil
Haha c'est beaucoup plus rapide que la manière suggérée dans la réponse acceptée ;-)
aderchox
46

Février 2015: Dans GitHub , existe-t-il un moyen facile d' accéder au premier commit d'un grand projet open source?

Oui il y en a maintenant! (Signification: sans cloner le repo et appliquer git logdans le clone local)

Depuis janvier 2017, vous avez « Naviguer plus rapidement dans l'historique des fichiers avec une vue améliorée des blâmes » sur GitHub.

Que vous déboguiez une régression ou que vous essayiez de comprendre comment un code a pris sa forme actuelle, vous voudrez souvent voir à quoi ressemblait un fichier avant une modification particulière.
Grâce à la vue améliorée des blâmes, vous pouvez facilement voir comment une partie de votre fichier a évolué au fil du temps sans afficher l'historique complet du fichier .

Voici une démo revenant au plus ancien commit original du repo git / git lui-même (47K + commits) ... en trois clics!

démo git / git

L'astuce ici est de choisir un fichier susceptible d'être trouvé dans le premier (ou très tôt) commit, comme un README.md.

VonC
la source
8
Cela fonctionne généralement, mais cela suppose que vous savez quels fichiers existaient lorsque le dépôt a été créé, et que vous pouvez trouver des lignes qui n'ont pas changé plusieurs fois depuis la création.
Wilfred Hughes
1
@WilfredHughes J'ai utilisé cette méthode pour Go pour renvoyer 32 986 commits au premier commit qui se trouve être un œuf de Pâques amusant. Dans ce cas, le readme n'est pas remonté jusqu'au début, j'ai donc répété le processus en appuyant Browse fileset en ouvrant le blâme pour un fichier différent.
andrewarchi
@andrewarchi Bien joué. En fait, les premiers commits sont easter-eggs: stackoverflow.com/a/21981037/6309
VonC
Je considérerais cela comme une "solution de contournement" alors que la réponse de @schmalzy est plus directe.
Jimmy Bosse
@JimmyBosse Ce n'est pas une solution de contournement. C'est la réponse à la question initiale. A git logne fonctionne que si vous clonez localement le dépôt (potentiellement énorme). Si vous voulez " naviguer " jusqu'au premier commit, alors c'est tout.
VonC
38

Je voulais voir l'un des premiers commits du projet nodejs . J'ai fait ce qui suit.

  1. Visité le site nodejs . Puis observé que le nombre total de commits est d'environ vingt-trois mille (23652 pour être précis) à ce stade.

entrez la description de l'image ici

  1. Ensuite, j'ai cliqué sur ce lien de validation et cela m'a conduit à https://github.com/nodejs/node/commits/master comme indiqué ci-dessous.

entrez la description de l'image ici

  1. Maintenant, j'ai fait défiler vers le bas et j'ai trouvé des boutons plus récents et plus anciens. Le bouton Plus récent est désactivé. J'ai cliqué sur l'ancien bouton et cela m'a amené à https://github.com/nodejs/node/commits/master?after=de37ba34c5d6f3a2d18daf482f850be8fddb4621+34

  2. Maintenant, observez que l'url a +34. Maintenant, j'ai changé cela en 23000 (puisque le nombre de commits que j'avais observés est de 23000). Donc, la nouvelle URL que j'ai essayée est

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

  1. Maintenant j'y suis presque. Avec quelques itérations supplémentaires ou par des clics de bouton plus anciens, j'ai atteint où je veux.
VivekDev
la source
2
Est-ce un double de la réponse 2 au-dessus de la vôtre? stackoverflow.com/a/49647826
Edric
2
est une réponse en double, mais j'aime les images, cela le rend plus attrayant.
winner_joiner
7

Vous pouvez accéder au premier commit d'un dépôt GitHub à l'aide du bookmarklet init .

INIT

Un bookmarklet pour vous amener rapidement au premier commit d'un repo.

Aperçu

Pouvoir accéder rapidement au commit le plus ancien d'un dépôt est très utile. Allez-y et faites glisser le bookmarklet (lien) sur votre barre de signets et cliquez dessus chaque fois que vous souhaitez accéder au premier commit d'un dépôt.

Usage

Accédez à la page de destination d'un dépôt en particulier (e.g. like the one you're on)et cliquez sur le bookmarklet, qui vous mènera à la première page (validation initiale). Par défaut, il suit la masterbranche, mais si vous modifiez le branchsur la page de destination, il ira au premier commit de cette branche.

Récupéré de README.md sur GitHub


Avis de non - responsabilité : J'ai contribué à une petite mise à jour du fichier Lisez-moi pour init quelques minutes avant de publier cette réponse.

Stevoisiak
la source
7

Vous pouvez accéder à la première page de commits avec ce qui suit, que je garde sous forme d'extrait dans les outils de développement 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();
Michael Terry
la source
1
Je vous remercie! Je ne savais pas que vous pouviez enregistrer des extraits comme celui-ci. Votre message était donc utile sur deux dimensions.
bmacnaughton
6

Vous devez utiliser la git log --reversecommande de git.

Cela renverra l'historique des validations pour le dépôt spécifié dans l'ordre inverse (du plus ancien au plus récent).

Ensuite, avec l'aide d'un peu de sedmagie, vous pourriez avoir quelque chose comme la date du premier commit (ce que j'ai vu que j'ai toujours eu besoin pour moi).

git log --reverse | sed -n 3p

En fin de compte, vous voudrez peut-être automatiser cela également (car il est généralement ennuyeux de taper la commande ou tout simplement impossible de s'en souvenir), donc un script shell comme celui-ci pourrait venir à la rescousse.

thodorisbais
la source
0

Ce lien donne un moyen d'interface utilisateur de le faire sur GitHub. Résumé:

  1. Onglet "Insights"

  2. Onglet Réseau (côté gauche)

  3. Maj + <-

Josh Britton
la source