¿Cómo encuentro la fecha de la primera confirmación en un repositorio de GitHub?


46

Dado un repositorio de GitHub, ¿cómo puedo encontrar rápidamente la fecha de su primer commit?

A menudo quiero saber cuántos años tiene el proyecto, pero no puedo encontrar una forma rápida de llegar al inicio de los historiales de compromiso para proyectos con historiales de compromiso muy largos.


1
Hilo en SO podría ser útil Cómo mostrar primero por cometer 'git log' se parece git log --reversemostrará compromete desde temprano a más reciente
batpigandme

Respuestas:


46

Haga clic en la pestaña "Perspectivas" del repositorio que desea ver la confirmación más antigua, seguido de la subpestaña "Red" en la barra de menú izquierda. Cuando la página está completamente cargada (es decir, puede ver muchas líneas uniéndose y todo), presione Shift+ para ir hasta el primer compromiso. Haga clic en el punto que representa el primer compromiso y puede obtenerlo.

Nota: Esto solo funciona para repositorios creados originalmente en GitHub, no para repositorios importados de otro lugar (es decir, confirmaciones no registradas a través de GitHub). Además, este método puede no funcionar necesariamente si el repositorio tiene demasiadas bifurcaciones.

Alternativamente, puede clonar el repositorio en su máquina local y ejecutar el siguiente comando:

git log --reverse

Las confirmaciones del repositorio se mostrarán en orden inverso (la confirmación más antigua primero).


44
No funciona si el repositorio tiene demasiados tenedores.
Mike McKay

3
"Red" se encuentra en la pestaña lateral "Gráficos" (por si acaso)
Jedidja

No funciona si la rama predeterminada no tiene la confirmación más temprana.
Deja de dañar a Monica el

Hay una pregunta similar sobre Stack Overflow. ¿Te importaría publicar esta respuesta?
Stevoisiak

-1no funciona --reversepara obtener la confirmación más antigua porque el límite ocurre antes del filtro.
Preguntas de Quolonel

14

Si ha clonado el repositorio, solo use los comandos git como de costumbre:

// cd to repo
$ git log --reverse

le mostrará el historial de confirmaciones en orden inverso. LOL.-


13

La respuesta de Hydra puede no funcionar con proyectos que tienen muchos tenedores: " No se pudo cargar el gráfico de red. Demasiados tenedores para mostrar " .

Puede consultar la pestaña 'Contribuyentes' en 'Gráficos'

Pestaña "Colaboradores" en "Gráficos"


Si selecciona el borde izquierdo del gráfico con el pincel, luego hace clic en # commits para el primer committer, en realidad verá los commits.
Gordon

@ Gordon que no es muy útil, solo muestra todos los compromisos para esa persona
Steven Penny

@StevenPenny, la pregunta era cómo obtener la fecha de la primera confirmación. De acuerdo, es desordenado, pero si selecciona solo el borde izquierdo, verá la primera confirmación. Prefiero el sitio dedicado que vinculé en mi respuesta a continuación .
Gordon

No funciona si la rama predeterminada no tiene la confirmación más temprana.
Deja de dañar a Monica el

Este es el mejor
Code Whisperer

1

Esto te llevará a la última página:

#!/bin/sh
url=https://github.com/$1/$2/commits?page=
up=1
while :
do
  printf '%s%d\t' $url $up
  if wget -q --spider $url$up
  then
    echo OK
    lw=$up
    up=$((up * 2))
  else
    echo Not Found
    break
  fi
done
while :
do
  k=$(((lw + up) / 2))
  if [ $k = $lw ]
  then
    break
  fi
  printf '%s%d\t' $url $k
  if wget -q --spider $url$k
  then
    echo OK
    lw=$k
  else
    echo Not Found
    up=$k
  fi
done

Ejemplo:

$ github.sh jp9000 OBS
https://github.com/jp9000/OBS/commits?page=1    OK
https://github.com/jp9000/OBS/commits?page=2    OK
https://github.com/jp9000/OBS/commits?page=4    OK
https://github.com/jp9000/OBS/commits?page=8    OK
https://github.com/jp9000/OBS/commits?page=16   OK
https://github.com/jp9000/OBS/commits?page=32   OK
https://github.com/jp9000/OBS/commits?page=64   OK
https://github.com/jp9000/OBS/commits?page=128  Not Found
https://github.com/jp9000/OBS/commits?page=96   Not Found
https://github.com/jp9000/OBS/commits?page=80   Not Found
https://github.com/jp9000/OBS/commits?page=72   OK
https://github.com/jp9000/OBS/commits?page=76   OK
https://github.com/jp9000/OBS/commits?page=78   OK
https://github.com/jp9000/OBS/commits?page=79   OK

Fuente


1

Aquí hay un sitio que solo busca la primera confirmación en GitHub, evitando los problemas con historiales de confirmación largos y demasiados tenedores:

http://first-commit.com/

Discusión sobre Hacker News .

... Lo que indica que esto es solo raspar el sitio web y calcular a qué página saltar. Sería mucho mejor usar la API.


1
No funciona si la rama predeterminada no tiene la confirmación más temprana.
Deja de dañar a Monica el

0

Puede utilizar la herramienta sed de Unix para filtrar solo la fecha de la primera confirmación utilizando

git log --reverse | sed -n -e "3,3p" 

Creo que es exactamente lo que necesitas.


0

Puedes usar esta pequeña aplicación https://firstcommit.netlify.com


1
Si bien este enlace puede responder la pregunta, es mejor incluir aquí las partes esenciales de la respuesta y proporcionar el enlace como referencia. Las respuestas de solo enlace pueden volverse inválidas si la página vinculada cambia. - De la opinión
serenesat

-1

Hay una manera de hacerlo desde la interfaz de GitHub.

Vaya a la página del proyecto y seleccione la Codepestaña seguida de la Commitssubpestaña como se muestra aquí:

ingrese la descripción de la imagen aquí

Eso te lleva a tu lista de confirmaciones. Si luego se desplaza hacia la parte inferior de la página, puede seguir retrocediendo en el tiempo haciendo clic en el Olderbotón.

Realmente no pude encontrar una manera de ordenarlo para que las confirmaciones se muestren en orden ascendente.


10
Ya sabia eso. La pregunta era para proyectos con historiales de compromiso muy largos .
Randomblue

-2
git log --reverse --format="format:%ci" | sed -n 1p

Si quieres obtenerlo desde una línea de comando

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.