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
- Перейдите в папку, в которой находится ваш файл.
- Нажмите «История», в настоящее время справа, в верхней области.
- Отсюда нажмите на... то, что я назову значком «кодовая бумага». В настоящее время он расположен справа от кнопки фиксации и имеет метку «Просмотреть на этом этапе истории».
- Нажмите «Просмотреть Raw» (если вы пропустили шаг 2, углубляйтесь, пока не дойдете до нужного файла), чтобы получить нужный код.
Способ 2
- Нажмите на текст «nnn commits». На данный момент с правой стороны.
- Нажмите на кнопку «код». В настоящее время он выглядит как два знака «<>» и имеет метку «Просмотреть репозиторий на этом этапе истории».
- Разверните и найдите нужный файл, чтобы получить код.
Метод 1 кажется более эффективным, когда я знаю, какой файл мне нужен, но не знаю, к какому коммиту вернуться. Метод 2 быстрее, когда я точно знаю, какое временное окно или фиксацию нужно посмотреть, но, возможно, не знаю, где находится файл.
Отказ от ответственности: интерфейсы часто меняются.
Чтобы ответить на первоначальный вопрос о просмотре файлов из истории ваших репозиториев непосредственно из онлайн-графического интерфейса GitHub, выполните следующие действия. В вашем репо:
- Просмотрите предыдущие коммиты.
- Выберите идентификатор ветки для коммита, который соответствует точке в истории, которую вы хотите просмотреть.
- В левом верхнем углу выберите «Обзор файлов» , чтобы просмотреть все файлы на данный момент времени.