Как перейти к самой ранней фиксации в репозитории Github?

163

Есть ли в GitHub простой способ перейти к самой ранней фиксации большого проекта с открытым исходным кодом?

На сегодняшний день у проекта более 13000 коммитов. Я не хочу, чтобы вам приходилось нажимать кнопку «Старое» на странице истории коммитов сотни и сотни раз, чтобы перейти к первоначальной фиксации (или первой фиксации).

jdw
источник
2
Рассматривали ли вы вместо этого клонирование репозитория, чтобы перемещаться по нему локально?
jub0bs
Попробуйте найти первую фиксацию
mja
Insights / Contributors показывает полный набор коммитов в главную ветку.
ToolmakerSteve

Ответы:

110

Клонируйте репозиторий, откройте из командной строки и запустите $ git log --reverse

Это покажет коммиты в обратном порядке.

Затем вы можете просмотреть его на github, как только у вас будет идентификатор (имя объекта) первой фиксации ... что-то вроде ... https://github.com/UserName/Repo/commit/6a5ace7b941120db5d2d50af6321770ddad4779e

Шмальзи
источник
20
Я не могу поверить, сколько странных, слишком сложных дел мне пришлось проработать, чтобы найти один простой и разумный ответ. Спасибо.
Sammitch
7
Одна настройка, я бы добавил onelineк этому аргумент - git log --reverse --onelineчтобы вы могли просматривать его как список
rynmrtn
А если вы используете командную строку Windows и хотите избежать попадания в Vim (?), Используйте git log --reverse --oneline | more. Стандартное moreповедение, Ctrl + C для выхода.
Sinjai
94

Для этого нет очевидного пользовательского интерфейса, но есть способ создать правильный URL-адрес для перехода на первую страницу журнала фиксации.

Предположим, мы хотим найти первую фиксацию репозитория dotnet / coreclr . Сначала обратите внимание на количество коммитов в репозитории: сейчас оно составляет 16 634. Теперь перейдите к списку коммитов и один раз нажмите «Старые» . URL-адрес будет примерно таким:https://github.com/dotnet/coreclr/commits/master?after=872095a758a3a6191a9798c94a98e8d1e16b2254+34

Обратите внимание на +34деталь. Вот сколько коммитов пропущено. Измените это значение на 16 634 минус 1 минус 35 на страницу, что дает нам этот URL , который приведет вас прямо к первой странице истории коммитов coreclr.

Роман Старков
источник
5
Хорошо, я создал для этого букмарклет. github.com/bpceee/oldest
bpceee
Это хороший ответ для просмотра первоначальной фиксации в списке фиксации проекта.
COil
Ха-ха, это намного быстрее, чем предложенный в принятом ответе ;-)
aderchox
48

Февраль 2015: Есть ли на GitHub простой способ перейти к самой ранней фиксации большого проекта с открытым исходным кодом?

Да, теперь есть! (Значение: без клонирования репо и применения git logв локальном клоне)

С января 2017 года на GitHub появилась функция « Ускоренная навигация по истории файлов с улучшенным просмотром обвинений ».

Независимо от того, отлаживаете ли вы регрессию или пытаетесь понять, как какой-то код приобрел свою текущую форму, вы часто захотите увидеть, как выглядел файл до того, как произошло конкретное изменение.
Благодаря улучшенному просмотру обвинений вы можете легко увидеть, как какая-либо часть вашего файла изменилась с течением времени, не просматривая полную историю файла .

Вот демо, возвращающееся к исходной самой старой фиксации самого репозитория git / git (47K + коммитов) ... в три клика!

демо git / git

Хитрость здесь в том, чтобы выбрать файл, который может быть найден при первой (или очень ранней) фиксации, например README.md.

VonC
источник
8
Обычно это работает, но предполагает, что вы знаете, какие файлы существовали при создании репо, и что вы можете найти строки, которые не менялись много раз с момента создания.
Уилфред Хьюз,
1
@WilfredHughes Я использовал этот метод для Go, чтобы вернуться назад. 32 986 коммитов для первого коммита, который оказался забавным пасхальным яйцом. В этом случае readme не вернулся до самого начала, поэтому я повторил процесс, нажав Browse filesи открыв имя файла для другого файла.
andrewarchi
@andrewarchi Отлично сделано. На самом деле первые несколько коммитов - это пасхальные яйца: stackoverflow.com/a/21981037/6309
VonC
Я бы счел это «обходным путем», тогда как ответ @schmalzy более прямой.
Джимми Боссе
@JimmyBosse Это не обходной путь. Это ответ на исходный вопрос. A git logработает только в том случае, если вы клонируете (потенциально огромное) репо локально. Если вы хотите « перейти » к первой фиксации, то вот она.
VonC
40

Я хотел увидеть одну из самых ранних коммитов проекта nodejs . Я сделал следующее.

  1. Посетил сайт nodejs . Затем заметил, что общее количество коммитов на данный момент составляет около двадцати трех тысяч (23652, если быть точным).

введите описание изображения здесь

  1. Затем я щелкнул ссылку фиксации, и это привело меня к https://github.com/nodejs/node/commit/master, как показано ниже.

введите описание изображения здесь

  1. Теперь прокрутите вниз, и я нашел кнопки «Новые» и «Старые». Кнопка «Новее» отключена. Я нажал старую кнопку, и мне пришлось перейти на https://github.com/nodejs/node/commit/master?after=de37ba34c5d6f3a2d18daf482f850be8fddb4621+34.

  2. Теперь обратите внимание, что URL-адрес имеет +34. Теперь я изменил это значение на 23000 (поскольку количество зафиксированных мной коммитов составляет 23000). Итак, новый URL-адрес, который я пробовал, -

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

  1. Теперь я почти у цели. Сделав еще несколько итераций или нажав более старые кнопки, я достиг того, чего хочу.
ВивекДев
источник
2
Это дубликат ответа на 2 ответа выше вашего? stackoverflow.com/a/49647826
Эдрик
2
дублированный ответ, но мне нравятся изображения, это делает его более привлекательным.
Winner_joiner
8

Вы можете попасть на первую страницу коммитов с помощью следующего кода, который я сохраняю как фрагмент в инструментах разработчика 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
Спасибо! Я не знал, что вы можете сохранять такие фрагменты, поэтому ваш пост был полезен в двух измерениях.
bmacnaughton
7

Вы можете перейти к первой фиксации репозитория GitHub с помощью букмарклета инициализации .

В ЭТОМ

Букмарклет , чтобы быстро получить вас в первой фиксации репо.

Обзор

Очень полезно иметь возможность быстро перейти к самому старому фиксации в репо. Продолжайте и перетащите букмарклет (ссылку) на панель закладок и щелкните по нему всякий раз, когда вы хотите перейти к первой фиксации репо.

Применение

Перейдите на целевую страницу любого конкретного репо (e.g. like the one you're on)и щелкните букмарклет, который перенесет вас на первую страницу (начальная фиксация). По умолчанию он отслеживает masterветвь, но если вы измените branchна целевой странице, он перейдет к первой фиксации этой ветки.

Получено с README.md на GitHub


Отказ от ответственности : я внес небольшое обновление Readme для инициализации за несколько минут до публикации этого ответа.

Stevoisiak
источник
6

Вам нужно использовать git log --reverseкоманду git.

Это вернет историю коммитов для указанного репо в обратном порядке (от самого старого к самому новому).

Затем, с помощью некоторой sedмагии, у вас может быть что-то вроде даты первой фиксации (это то, что я видел, мне всегда было нужно для себя).

git log --reverse | sed -n 3p

В конце концов, вы можете захотеть автоматизировать и это (поскольку в большинстве случаев набирать команду либо скучно, либо просто невозможно ее запомнить), поэтому сценарий оболочки, подобный этому, может прийти на помощь.

thodorisbais
источник
2

Эта ссылка дает возможность пользовательского интерфейса сделать это на GitHub. Резюме:

  1. Вкладка "Статистика"

  2. Вкладка сети (слева)

  3. Shift + <-

Джош Бриттон
источник