Como navego para o commit mais antigo em um repositório do Github?

152

No GitHub, existe uma maneira fácil de navegar até o commit mais antigo de um grande projeto de código aberto?

O projeto tem mais de 13.000 confirmações a partir de hoje. Não quero pressionar o botão "Mais antigo" na página do histórico de consolidação centenas e centenas de vezes para chegar ao commit inicial (ou primeiro commit).

jdw
fonte
2
Você já pensou em clonar o repositório para navegar localmente?
Jb0bs
Insights / Contribuintes mostra uma gama completa de confirmações na ramificação principal.
Home

Respostas:

102

Clone o repositório, abra com a linha de comando e execute $ git log --reverse

Isso mostrará os commits na ordem inversa.

Então você pode visualizá-lo no github depois de ter o ID (Nome do Objeto) do primeiro commit ... algo como ... https://github.com/UserName/Repo/commit/6a5ace7b941120db5d2d50af6321770ddad4779e

Schmalzy
fonte
16
Não posso acreditar em quantos negócios estranhos e complicados eu tive que vasculhar para encontrar uma resposta simples e razoável. Obrigado.
Sammitch 16/03/19
7
Uma emenda, gostaria de acrescentar o onelinearg para isso - git log --reverse --onelinepara que você possa vê-lo como uma lista
rynmrtn
E se você estiver usando o prompt de comando do Windows e quiser evitar ser sugado para o Vim (?), Use git log --reverse --oneline | more. moreComportamento padrão , Ctrl + C para sair.
Sinjai 26/12/18
82

Não há interface óbvia para isso, mas existe uma maneira de construir a URL correta para ir para a página um do log de confirmação.

Suponha que desejemos encontrar o primeiro commit do repositório dotnet / coreclr . Primeiro, anote o número de confirmações no repositório: atualmente é 16.634. Agora vá para a lista de confirmações e clique em "Mais antigas" uma vez . O URL será algo como isto:https://github.com/dotnet/coreclr/commits/master?after=872095a758a3a6191a9798c94a98e8d1e16b2254+34

Observe a +34parte. É quantas confirmações são ignoradas. Altere isso para 16.634 menos 1 menos 35 por página, que nos fornece esse URL , que leva você diretamente à primeira página do histórico de confirmação do coreclr.

Roman Starkov
fonte
4
Bom, criei um bookmarklet para fazer isso. github.com/bpceee/oldest
bpceee
Esta é a boa resposta para visualizar o commit inicial na lista de commit do projeto.
bobina
Haha, isso é muito mais rápido do que o sugerido na resposta aceita ;-)
aderchox
46

Fevereiro de 2015: No GitHub , existe uma maneira fácil de navegar para o commit mais antigo de um grande projeto de código aberto?

Sim, agora existe! (Significado: sem clonar o repositório e aplicando-o git logno clone local)

Desde janeiro de 2017, você tem " Navegar no histórico de arquivos mais rapidamente com melhor visualização de culpa " no GitHub.

Esteja você depurando uma regressão ou tentando entender como algum código passou a ter sua forma atual, geralmente você deseja ver a aparência de um arquivo antes de uma alteração específica.
Com a exibição aprimorada de culpa, você pode ver facilmente como qualquer parte do seu arquivo evoluiu ao longo do tempo sem visualizar o histórico completo do arquivo .

Aqui está uma demonstração voltando ao commit mais antigo original do repositório git / git (47K + confirma) ... em três cliques!

demo git / git

O truque aqui é escolher um arquivo que provavelmente será encontrado no primeiro commit (ou muito cedo), como a README.md.

VonC
fonte
8
Isso geralmente funciona, mas pressupõe que você saiba quais arquivos existiam quando o repositório foi criado e que você pode encontrar linhas que não foram alteradas muitas vezes desde o início.
Wilfred Hughes
1
@WilfredHughes Eu usei esse método para o Go voltar 32.986 commits para o primeiro commit, que por acaso é um ovo de páscoa divertido. Nesse caso, o leia-me não voltou até o início, por isso repeti o processo pressionando Browse filese abrindo a culpa por um arquivo diferente.
precisa
@andrewarchi Muito bem feito. Na verdade, os primeiros commits são easter-eggs: stackoverflow.com/a/21981037/6309
VonC
Eu consideraria isso uma "solução alternativa", enquanto a resposta de @schmalzy é mais direta.
Jimmy Bosse
@JimmyBosse É não uma solução alternativa. É a resposta para a pergunta original. A git logsó funciona se clonar o (potencialmente enorme) repo localmente. Se você deseja " navegar " para o primeiro commit, então é isso.
VonC 18/08/19
37

Eu queria ver um dos primeiros commits do projeto nodejs . Eu fiz o seguinte.

  1. Visitou o site nodejs . Em seguida, observe que o número total de confirmações é de cerca de vinte e três mil (23652, para ser preciso) neste momento.

insira a descrição da imagem aqui

  1. Em seguida, cliquei no link de confirmação e me levou a https://github.com/nodejs/node/commits/master, como mostrado abaixo.

insira a descrição da imagem aqui

  1. Agora rolei para baixo e encontrei os botões Mais recentes e Mais antigos. O botão Mais recente está desativado. Cliquei no botão antigo e levei para https://github.com/nodejs/node/commits/master?after=de37ba34c5d6f3a2d18daf482f850be8fddb4621+34

  2. Agora observe que o URL tem +34. Agora mudei isso para 23000 (já que o número de confirmações que observei é 23000). Então, o novo URL que tentei é

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

  1. Agora estou quase lá. Com mais algumas iterações ou com cliques de botão mais antigos, cheguei onde queria.
VivekDev
fonte
2
Esta é uma duplicata da resposta 2 respostas acima da sua? stackoverflow.com/a/49647826
Edric
2
é resposta duplicada, mas eu gosto das imagens, torna-a mais atraente.
winner_joiner
7

Você pode navegar para a primeira confirmação de um repositório GitHub usando o bookmarklet init .

INICIAR

Um bookmarklet para levá-lo rapidamente ao primeiro commit de um repo.

Visão geral

Ser capaz de navegar rapidamente para o commit mais antigo em um repositório é bastante útil. Vá em frente e arraste o bookmarklet (link) para a barra de favoritos e clique nele sempre que desejar ir para o primeiro commit de um repo.

Uso

Vá para a página de destino de qualquer repositório específico (e.g. like the one you're on)e clique no bookmarklet, que o levará à primeira página (confirmação inicial). Por padrão, ele rastreia a masterramificação, mas se você alterar a branchpágina de destino, ela irá para o primeiro commit dessa ramificação.

Recuperado de README.md no GitHub


Isenção de responsabilidade : contribuí com uma pequena atualização do Leia-me para iniciar alguns minutos antes de postar esta resposta.

Stevoisiak
fonte
7

Você pode acessar a primeira página de confirmações com o seguinte, que eu mantenho como um trecho nas ferramentas de desenvolvimento do 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
fonte
1
Obrigado! Eu não sabia que você poderia salvar trechos assim, para que sua postagem fosse útil em duas dimensões.
precisa saber é o seguinte
6

Você precisa usar o git log --reversecomando git.

Isso retornará o histórico de confirmações para o repo especificado em ordem inversa (da mais antiga para a mais recente).

Então, com a ajuda de um pouco de sedmagia, você pode ter algo como a data do primeiro commit (que é o que eu sempre precisei).

git log --reverse | sed -n 3p

Por fim, você também pode automatizar isso (já que é muito chato digitar o comando ou simplesmente impossível lembrá-lo), então um script de shell como esse pode ser útil.

thodorisbais
fonte
1

Você pode usar este webapp para desenterrar rapidamente o primeiro commit https://firstcommit.netlify.com/

trabalho de brilho
fonte
0

Este link fornece uma maneira de interface do usuário para fazer isso no GitHub. Resumo:

  1. Guia "Informações"

  2. Guia Rede (lado esquerdo)

  3. Shift + <-

Josh Britton
fonte