Як я можу перейти до найбільш ранніх даних у сховищі Github?


152

Чи є в GitHub простий спосіб перейти до найперших проектів великого проекту з відкритим кодом?

На сьогодні проект має понад 13 000 комісій. Мені не хочеться сотні і сотні разів натискати кнопку "Старіші" на сторінці історії комісій, щоб дістатись до початкової фіксації (або першої фіксації).


2
Чи обмірковували ви клонування сховища для локального переміщення по ньому?
jub0bs


Insights / Contributors показує повний спектр комітетів для освоєння галузі.
ToolmakerSteve

Відповіді:


102

Клоніруйте сховище, відкрийте командний рядок і запустіть $ git log --reverse

Це покаже комісії у зворотному порядку.

Тоді ви можете переглянути його на github, коли у вас є ідентифікатор (назва об’єкта) першого фіксації ... щось на кшталт ... https://github.com/UserName/Repo/commit/6a5ace7b941120db5d2d50af6321770ddad4779e


16
Я не можу повірити, наскільки дивний, надскладний бізнес мені довелося просіяти, щоб знайти одну просту розумну відповідь. Дякую.
Саммітч

7
Один твік, я б додав onelineаргумент до цього - git log --reverse --onelineщоб ви могли переглянути його як список
rynmrtn

І якщо ви використовуєте командний рядок Windows і хочете уникнути потрапляння в Vim (?), Використовуйте git log --reverse --oneline | more. Стандартна moreповедінка, Ctrl + C, щоб вийти.
Сінджай

82

Для цього немає очевидного інтерфейсу, але є спосіб побудувати правильну URL-адресу, щоб перейти на сторінку одного з журналів фіксації.

Припустимо, ми хочемо знайти першу команду сховища dotnet / coreclr . Спершу відзначте кількість комісій у сховищі: наразі це 16 634. Тепер перейдіть до списку комісій та натисніть "Старіший" один раз . URL буде приблизно таким:https://github.com/dotnet/coreclr/commits/master?after=872095a758a3a6191a9798c94a98e8d1e16b2254+34

Зауважте +34деталь. Ось скільки комітетів пропущено. Змініть це на 16 634 мінус 1 мінус 35 на сторінку, що дає нам цю URL-адресу , яка перенесе вас на першу сторінку історії фіксації coreclr.


4
Приємно, я створив закладку для цього. github.com/bpceee/oldest
bpceee

Це хороша відповідь для перегляду початкових зобов’язань у списку проектів.
COil

Ха-ха, це швидше, ніж запропоновано у прийнятій відповіді ;-)
aderchox

46

Лютий 2015: Чи є у GitHub простий спосіб перейти до найдавніших проектів великого проекту з відкритим кодом?

Так, зараз є! (Значення: без клонування РЕПО та застосування git logв локальному клоні)

З січня 2017 року у вас є " Швидше переходити по історії файлів із покращеним видом вини " на GitHub.

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

Ось демонстрація, яка повертається до оригінальної найстарішої версії самого git / git repo (47K + виконує) ... за три кліки!

demo git / git

Хитрість тут полягає в тому, щоб вибрати файл, який, швидше за все, буде знайдений у першому (або дуже ранньому) документі, як README.md.


8
Це, як правило, працює, але передбачається, що ви знаєте, які файли існували при створенні репо, і що ви можете знайти рядки, які не змінювалися багато разів з моменту створення.
Вільфред Х'юз

1
@WilfredHughes Я використав цей метод для Go, щоб відскочити назад 32,986 зобов’язань до першого зобов’язання, яке буває веселим пасхальним яйцем. У цьому випадку readme не повернувся до початку, тому я повторив процес, натиснувши Browse filesта відкривши звинувачення в іншому файлі.
andrewarchi

@andrewarchi Чудово виконано. На насправді, перші кілька фіксацій є великодні яйця-: stackoverflow.com/a/21981037/6309
VonC

Я вважаю це "вирішенням", тоді як відповідь @schmalzy є більш прямою.
Джиммі Босс

@JimmyBosse Це не обхід . Це відповідь на оригінальне запитання. Працює git logлише, якщо локально клонувати (потенційно величезний) репо. Якщо ви хочете " орієнтуватися " на кулак, то це все.
VonC

37

Я хотів побачити одне з найдавніших проектів nodejs . Я зробив наступне.

  1. Відвідав сайт nodejs . Потім зауважили, що в цей момент загальна кількість комісій становить приблизно двадцять три тисячі (якщо бути точним 23652).

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

  1. Далі я натиснув на це посилання "коміти", і це перевело мене до https://github.com/nodejs/node/commiss/master, як показано нижче.

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

  1. Тепер прокручується донизу, і я знайшов новіші та старіші кнопки. Кнопка Новіша вимкнена. Я натиснув старішу кнопку, і мені потрібно було https://github.com/nodejs/node/commits/master?after=de37ba34c5d6f3a2d18daf482f850be8fddb4621+34

  2. Тепер зауважте, що URL має +34. Тепер я змінив це на 23000 (оскільки кількість зафіксованих мною фактів - 23000). Отже, новий URL, який я спробував, є

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

  1. Зараз я майже там. З ще кількома ітераціями або старішими натисканнями кнопки я дістався куди хочу.

2
Це дублікат відповіді 2 відповіді вище вашого? stackoverflow.com/a/49647826
Edric

2
- це дублююча відповідь, але мені подобаються зображення, це робить її більш привабливою.
winner_joiner

7

Ви можете перейти до першої передачі репозиторію GitHub, використовуючи закладку init .

В ЦЬОМУ

Букмарклет , щоб швидко отримати вас в першій фіксації репо.

Огляд

Можливість швидко перейти до найстарішої фіксації в репо-речи - це дуже корисно. Вперед і перетягніть закладку (посилання) на панель закладок і клацніть по ній, коли ви хочете перейти до першої фіксації репо.

Використання

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

Отримано з README.md на GitHub


Відмова : Я додав невелике оновлення Readme, щоб запустити кілька хвилин до публікації цієї відповіді.


7

Ви можете перейти на першу сторінку комітетів із наступним, який я зберігаю як фрагмент в інструментах для розробників 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

6

Вам потрібно використовувати git log --reverseкоманду git.

Це поверне історію комісій для зазначеного репо в зворотному порядку (найдавніший до найновішого).

Тоді за допомогою якоїсь sedмагії у вас може виникнути щось на кшталт дати першого вчинення (саме те, що я бачив, я завжди потребував для себе).

git log --reverse | sed -n 3p

Зрештою, ви можете також автоматизувати це (оскільки вводити команду в основному або нудно, або просто неможливо запам’ятати її), тому сценарій оболонки, як цей, може прийти на допомогу.



Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.