GitHub: поиск по старым версиям файлов

Я знаю, что с помощью GitHub я могу просматривать все текущие версии моих файлов в репо. Тем не менее, я также хотел бы просмотреть более старые версии моих файлов репо. Например, скажем, у меня в коде была функция get_info(), но я удалил ее несколько версий назад, можно ли найти get_info и найти код. Если это невозможно с помощью GitHub, возможно ли это из командной строки git?

РЕДАКТИРОВАТЬ

Спасибо @Mark Longair за то, что показали, как это можно сделать из командной строки git. Если это невозможно в GitHub, это было бы здорово.

4 ответа

Решение

В настоящее время я не верю, что можно искать в полной истории кода репозитория на веб-сайте github - самый близкий - это просто поиск в текущем коде репозитория с опцией "поиск кода" на этой странице.

Однако из командной строки вы можете найти любые коммиты, в которых были введены или удалены строки с упоминанием get_info с -S возможность git log, например:

git log -Sget_info -p

(NB не должно быть пробела между -S и поисковый термин)

(также обратите внимание: чтобы найти более одного слова, заключите в '):

git log -S'get info' -p

Таким образом, как минимум, должен найти коммит, где функция была впервые представлена ​​и та, которая ее удалила. Я добавил -p так что вы также можете увидеть патчи - если много коммитов внесли изменения, в которых упоминалась функция, которая может быть полезна. Если функция была только в другой ветке, ее также можно использовать --all искать по всем веткам.

Cascabel указывает в комментарии ниже, что git 1.7.4 представит -G вариант как альтернатива - это изменение кратко изложено в недавнем сообщении в блоге от Junio ​​Hamano (сопровождающий git): http://gitster.livejournal.com/48191.html

      git log -G'your text' -p --all

Обратите внимание на следующее из документации;

[...] рассмотрите фиксацию со следующим различием в том же файле:

       +    return frotz(nitfol, two->ptr, 1, 0);
...
-    hit = frotz(nitfol, mf2.ptr, 1, 0);

Пока git log -G"frotz\(nitfol" покажет этот коммит, git log -S"frotz\(nitfol" --pickaxe-regex не будет (потому что количество вхождений этой строки не изменилось).

Престижность Марка и Каскабеля за то, что они указали в правильном направлении

Это возможно в веб-интерфейсе Github. Github может загрузить файл, если он слишком большой или не поддерживается, может открыть его в новой вкладке, если ваш браузер может отобразить файл, или может отобразить его в строке. Вот два способа:

  1. Перейдите в репозиторий и выберите ветку, для которой вы хотите просмотреть историю.

Способ 1

  1. Перейдите в папку, в которой находится ваш файл.
  2. Нажмите «История», в настоящее время справа, в верхней области.
  3. Отсюда нажмите на... то, что я назову значком «кодовая бумага». В настоящее время он расположен справа от кнопки фиксации и имеет метку «Просмотреть на этом этапе истории».
  4. Нажмите «Просмотреть Raw» (если вы пропустили шаг 2, углубляйтесь, пока не дойдете до нужного файла), чтобы получить нужный код.

Способ 2

  1. Нажмите на текст «nnn commits». На данный момент с правой стороны.
  2. Нажмите на кнопку «код». В настоящее время он выглядит как два знака «<>» и имеет метку «Просмотреть репозиторий на этом этапе истории».
  3. Разверните и найдите нужный файл, чтобы получить код.

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


Отказ от ответственности: интерфейсы часто меняются.

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

  1. Просмотрите предыдущие коммиты.Просмотрите предыдущие коммиты.
  2. Выберите идентификатор ветки для коммита, который соответствует точке в истории, которую вы хотите просмотреть.Выберите идентификатор филиала
  3. В левом верхнем углу выберите «Обзор файлов» , чтобы просмотреть все файлы на данный момент времени.Выберите «Обзор файлов»
Другие вопросы по тегам