¿Cómo navego al primer commit en un repositorio de Github?


152

En GitHub, ¿hay una manera fácil de navegar a la confirmación más temprana de un gran proyecto de código abierto?

El proyecto tiene más de 13,000 compromisos hasta el día de hoy. No quiero tener que presionar el botón "Anterior" en la página del historial de confirmaciones cientos y cientos de veces para llegar a la confirmación inicial (o la primera confirmación).


2
¿Has considerado clonar el repositorio para navegarlo localmente?
jub0bs


Insights / Contributors muestra una gama completa de compromisos para la rama maestra.
ToolmakerSteve

Respuestas:


102

Clonar el repositorio, abrir con la línea de comando y ejecutar $ git log --reverse

Esto mostrará las confirmaciones en orden inverso.

Luego puede verlo en github una vez que tenga la ID (Nombre del objeto) de la primera confirmación ... algo así como ... https://github.com/UserName/Repo/commit/6a5ace7b941120db5d2d50af6321770ddad4779e


16
No puedo creer la cantidad de negocios extraños y complicados que tuve que examinar para encontrar una respuesta simple y razonable. Gracias.
Sammitch

77
Un ajuste, agregaría el onelineargumento a esto, git log --reverse --onelinepara que pueda verlo como una lista
rynmrtn

Y si está utilizando el símbolo del sistema de Windows y desea evitar ser absorbido por Vim (?), Use git log --reverse --oneline | more. moreComportamiento estándar , Ctrl + C para salir.
Sinjai

82

No hay una interfaz de usuario obvia para hacer esto, pero hay una manera de construir la URL correcta para ir a la página uno del registro de confirmación.

Supongamos que queremos encontrar la primera confirmación del repositorio dotnet / coreclr . Primero tome nota del número de confirmaciones en el repositorio: actualmente es 16.634. Ahora ve a la lista de confirmaciones y haz clic en "Anterior" una vez . La URL será algo como esto:https://github.com/dotnet/coreclr/commits/master?after=872095a758a3a6191a9798c94a98e8d1e16b2254+34

Note la +34parte. Esa es la cantidad de confirmaciones que se omiten. Cambie eso a 16.634 menos 1 menos 35 por página, eso nos da esta URL , que lo lleva directamente a la primera página del historial de confirmación de coreclr.


44
Bien, creé un bookmarklet para hacer esto. github.com/bpceee/oldest
bpceee

Esta es la buena respuesta para ver la confirmación inicial en la lista de confirmación del proyecto.
Bobina

Jaja, esto es mucho más rápido que lo sugerido en la respuesta aceptada ;-)
aderchox

46

Febrero de 2015: en GitHub , ¿hay una manera fácil de navegar a la primera confirmación de un gran proyecto de código abierto?

Sí, ahora hay! (Significado: sin clonar el repositorio y aplicarlo git logen el clon local)

Desde enero de 2017, tiene " Navegar por el historial de archivos más rápido con una vista de culpa mejorada " en GitHub.

Ya sea que esté depurando una regresión o tratando de comprender cómo un código llegó a tener su forma actual, a menudo querrá ver cómo se veía un archivo antes de un cambio en particular.
Con la vista de culpa mejorada, puede ver fácilmente cómo ha evolucionado cualquier parte de su archivo con el tiempo sin ver el historial completo del archivo .

Aquí hay una demostración volviendo a la confirmación más antigua original del repositorio git / git (47K + confirmaciones) ... ¡en tres clics!

demo git / git

El truco aquí es elegir un archivo que probablemente se encuentre en el primer commit (o muy temprano), como a README.md.


8
Esto generalmente funciona, pero supone que usted sabe qué archivos existían cuando se creó el repositorio, y que puede encontrar líneas que no han cambiado muchas veces desde el inicio.
Wilfred Hughes

1
@WilfredHughes Utilicé este método para Ir para retroceder 32,986 confirmaciones a la primera confirmación que resulta ser un divertido huevo de pascua. En este caso, el Browse filesarchivo Léame no retrocedió hasta el principio, así que repetí el proceso presionando y abriendo la culpa de un archivo diferente.
andrewarchi

@andrewarchi Bien hecho. En realidad, los primeros commits son huevos de pascua: stackoverflow.com/a/21981037/6309
VonC

Consideraría esto una "solución" mientras que la respuesta de @schmalzy es más directa.
Jimmy Bosse

Es @JimmyBosse no una solución. Es la respuesta a la pregunta original. A git logsolo funciona si clonas el repositorio (potencialmente enorme) localmente. Si quieres " navegar " hasta el primer puño, entonces ya está.
VonC

37

Quería ver uno de los primeros commits del proyecto nodejs . He hecho lo siguiente.

  1. Visité el sitio nodejs . Luego observó que el número total de confirmaciones es de alrededor de veintitrés mil (23652 para ser precisos) en este momento.

ingrese la descripción de la imagen aquí

  1. Luego hice clic en el enlace de confirmación y me llevó a https://github.com/nodejs/node/commits/master como se muestra a continuación.

ingrese la descripción de la imagen aquí

  1. Ahora me desplacé hacia abajo y encontré botones más nuevos y más antiguos. El botón Más nuevo está deshabilitado. Hice clic en el botón anterior y me llevó a https://github.com/nodejs/node/commits/master?after=de37ba34c5d6f3a2d18daf482f850be8fddb4621+34

  2. Ahora observe que la url tiene +34. Ahora cambié eso a 23000 (ya que el número de confirmaciones que había observado es 23000). Entonces, la nueva url que probé es

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

  1. Ahora ya casi estoy allí. Con unas pocas iteraciones más o con clics de botones anteriores, llegué a donde quiero.

2
¿Es este un duplicado de la respuesta 2 respuestas por encima de la suya? stackoverflow.com/a/49647826
Edric

2
es una respuesta duplicada, pero me gustan las imágenes, lo hace más atractivo.
winner_joiner

7

Puede navegar a la primera confirmación de un repositorio de GitHub utilizando el marcador de inicio .

EN ESO

Un bookmarklet para rápidamente a la primera confirmación de un repositorio.

Visión general

Poder navegar rápidamente al commit más antiguo en un repositorio es bastante útil. Siga adelante y arrastre el marcador (enlace) a su barra de marcadores y haga clic en él cada vez que desee ir a la primera confirmación de un repositorio.

Uso

Vaya a la página de destino de cualquier repositorio en particular (e.g. like the one you're on)y haga clic en el bookmarklet, que lo llevará a la primera página (confirmación inicial). Por defecto, rastrea la masterrama, pero si cambia la branchpágina de destino, irá a la primera confirmación de esa rama.

Recuperado de README.md en GitHub


Descargo de responsabilidad : contribuí con una pequeña actualización de Léame para iniciar unos minutos antes de publicar esta respuesta.


7

Puede acceder a la primera página de confirmaciones con lo siguiente, que guardo como fragmento en las herramientas de desarrollo de 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
¡Gracias! No sabía que podía guardar fragmentos como ese, por lo que su publicación fue útil en dos dimensiones.
bmacnaughton

6

Necesitas usar el git log --reversecomando de git.

Esto devolverá el historial de confirmaciones para el repositorio especificado en orden inverso (más antiguo a más reciente).

Luego, con la ayuda de un poco de sedmagia, podrías tener algo como la fecha de la primera confirmación (que es lo que he visto que siempre he necesitado para mí).

git log --reverse | sed -n 3p

En última instancia, es posible que desee automatizar esto también (ya que es aburrido escribir el comando o simplemente imposible recordarlo), por lo que un script de shell como este podría venir al rescate.



0

Este enlace ofrece una forma de UI para hacer esto en GitHub. Resumen:

  1. Pestaña "Perspectivas"

  2. Pestaña de red (lado izquierdo)

  3. Shift + <-

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.