Как искать сообщение фиксации на GitHub?
не в Git РЕПО, а в GitHub в частности-как я могу искать только сообщения фиксации определенного РЕПО / филиала?
11 ответов:
С 2017 года это функциональность, включенная в сам GitHub.
пример поиска, используемый ими
repo:torvalds/linux merge:false crypto policy
раньше вы могли это сделать, но Github удалил эту функцию в какой-то момент в середине 2013 года. Чтобы добиться этого локально, вы можете сделать:
git log -g --grep=STRING(используйте флаг-g, если вы хотите искать другие ветви и висячие коммиты.)
-g, --walk-reflogs Instead of walking the commit ancestry chain, walk reflog entries from the most recent one to older ones.
обновление (2017/01/05):
Github опубликовал обновление, которое теперь позволяет выполнять поиск в сообщениях фиксации из своего пользовательского интерфейса. Смотрите блоге для получения дополнительной информации.
У меня был тот же вопрос и вчера связался с кем-то @Github:
поскольку они переключили свою поисковую систему на ElasticSearch, невозможно искать сообщения фиксации с помощью пользовательского интерфейса Github. Но эта функция находится на команде список желаний.
к сожалению, сейчас нет даты выпуска этой функции.
короткий ответ, вы не можете искать сообщения фиксации непосредственно на github.com веб-сайт. На данный момент мы рекомендуем местный
git grepрешение другие на этой теме предложили.в какой-то момент времени GitHub действительно предложил
git grepпоиск стиля по сообщениям фиксации для одного репозитория. К сожалению, этот подход выявил отказ в обслуживании, который может сделать файловый сервер недоступным. По этой причине мы удалилиgit grepпоиск.текущая back-of-the envelope estimates ставит количество коммитов в GitHub где-то около отметки 80 миллиардов. Хотя инженеры Google смеются за нашими спинами, это довольно большое количество документов для хранения в ElasticSearch. Мы хотели бы сделать этот набор данных для поиска, но это не тривиальный проект.
Это было удалено из GitHub. Я использую:
$git log --all --oneline | grep "search query"
вы также можете фильтровать по автору:
$git log --all --oneline --author=rickhanlonii | grep "search query"
со страницы справки на поиск кода Кажется, что это не возможно.
вы можете искать текст в своем РЕПО, включая возможность выбора файлов или путей для поиска, но вы не можете указать, что вы хотите искать в коммитах.
может быть предложите им это?
вы можете сделать это с РЕПО, которые были просмотрены google (результаты варьируются от РЕПО к РЕПО)
поиск во всех ветвях всех сканируемых репозиториев для "изменить лицензию"
сайт"изменить лицензию":https://github.com / * / * / коммиты
поиск главной ветви всех сканированных репозиториев для "изменить лицензию"
"изменить лицензию " сайт:https://github.com / * / * / commits / master
поиск главной ветви всех сканированных РЕПО twitter для "изменить лицензию"
сайт"изменить лицензию":https://github.com/twitter/ * / коммиты / мастер
поиск всех ветвей twitter / some_project РЕПО для "изменить лицензию"
сайт"изменить лицензию":https://github.com/twitter/some_project/commits
Обновление Январь 2017 (два года спустя):
теперь вы можете искать сообщения! (все еще только в главной ветке)
февраль 2015: Не уверен, что это вообще возможно, учитывая текущую базу инфраструктуры поиска на Elasticsearch (введено в январе).
в качестве ответа " рисунок из достоверных и / или официальных источники", вот это интервью сделано с людьми GitHub, отвечающими за введение Elasticsearch в GitHub (август 2013 года)
Тим Пиз: у нас есть два типа документов в один файл исходного кода и другой репозиторий. Способ работы git заключается в том, что у вас есть коммиты, и у вас есть ветка для каждого коммита. Документы репозитория отслеживают самую последнюю фиксацию для этого конкретного репозитория, который был индексированный. Когда пользователь нажимает новую фиксацию до Github, мы затем вытаскиваем этот документ репозитория из elasticsearch. Затем мы видим самую последнюю индексированную фиксацию, а затем получаем список всех файлов, которые были изменены, добавлены или удалены между этим недавним нажатием и тем, что мы ранее индексировали. Тогда мы можем пойти дальше и просто обновить те документы, которые были изменены. Нам не нужно переиндексировать все дерево исходного кода каждый раз, когда кто-то нажимает.
Андрей Чолакян:Итак, вы, ребята, только индексируете, я предполагаю, главную ветвь.
Тим ПиС: Правильно. Это только глава Главного филиала, который вы собираетесь туда попасть, и все же это много данных, два миллиарда документов, 30 терабайт.
Эндрю Чолакян: это ужасно огромный.
[...]Тим ПиС: с индексированием исходного кода на push, это процесс самовосстановления.
У нас есть этот репозиторий документ, который отслеживает последнюю индексированную фиксацию. Если мы пропустили, просто пропустите Три коммита, где эти задания терпят неудачу, следующий коммит, который входит, мы все еще смотрим на разницу между предыдущим коммитом, который мы индексировали, и тем, который мы видим с этим новым толчком.
Вы делаетеgit diffи вы получаете все файлы, которые были обновлены, удалены или добавлены. Вы можете просто сказать: "Хорошо, нам нужно удалить эти файлы. Нам нужно добавить эти файлы, и все такое.-Это самоисцеление. и это подход, который мы взяли с почти всей архитектурой.Это все значит не все отделения все РЕПО будет индексироваться с таким подходом.
Глобальный поиск сообщений фиксации пока недоступен.
И Тим ПиС сам подтверждаетсообщения не индексируются.обратите внимание, что это не невозможно получить свой собственный elasticsearch local индексирование локального клона: см. "Поиск репозитория git с помощью ElasticSearch"
но для конкретного РЕПО проще всего клонировать его и делать:
git log --all --grep='my search'(Дополнительные параметры в "как искать репозиторий Git по сообщению о фиксации?")
Так как это было удалено из Github, я использую
gitkна Linux, чтобы сделать это.из терминала перейдите в свой репозиторий и введите
gitkв середине графического интерфейса есть окно поиска. Он обеспечивает хороший выбор фильтров:
область-содержащий, касаясь пути, добавление / удаление строки, изменение соответствия строки
тип соответствия-точный / IgnCase / Regexp
поля поиска-все поля / заголовок / комментарии / коммиттер
Это хорошо работает изнутри eclipse, пока github не добавит функцию:
https://wiki.eclipse.org/EGit/User_Guide#Searching_for_commits
если вы работаете на Ubuntu (или, возможно, других ОС Unix) и имеете локальную версию РЕПО, вы можете попробовать этот грубый сценарий оболочки, который я написал, чтобы открыть страницы GitHub для всех коммитов, соответствующих вашему поисковому запросу в новых вкладках в вашем браузере по умолчанию:
#!/bin/sh for sha1 in $(git rev-list HEAD -i --grep=""); do python -mwebbrowser https://github.com/RepoOwnerUserName/RepoName/commit/$sha1 >/dev/null 2>/dev/null doneпросто заменить
https://github.com/RepoOwnerUserName/RepoName/с фактическим URL-адресом GitHub вашего РЕПО сохраните скрипт где-нибудь (например, какgithubsearch.sh, сделайте его исполняемым (chmod +x githubsearch.sh), а затем добавьте следующий псевдоним~/.bashrcфайл:alias githubsearch='/path/to/githubsearch.sh'затем, из любой точки вашего РЕПО git, просто сделайте это в терминале:
githubsearch "what you want to search for"и любые коммиты, соответствующие вашему (без учета регистра) поисковому запросу, будут иметь соответствующие страницы GitHub, открытые в вашем браузере. (Имейте в виду, что если ваш поисковый запрос появляется в сотнях коммитов, это может привести к сбою Вашего браузера и съесть процессор вашего ПК на некоторое время.)
Я только проверил это на Ubuntu и не знаю достаточно о сценариях оболочки, чтобы знать будет ли это работать на других ОС на базе Unix-особенно я не знаю, является ли что - либо, что я использовал здесь, специфичным для Bash. Не стесняйтесь комментировать или редактировать, чтобы добавить информацию о совместимости.





Comments