Как искать на GitHub, чтобы получить точные совпадения (например, что цитаты делают для Google)

221

Я могу искать точные совпадения из Google, используя такие цитаты, как "system <<-". Как сделать подобное для github? Я не могу заставить это работать.

Просто ученик
источник

Ответы:

131

Ты не можешь Официальные правила поиска GitHub :

Из-за сложности поиска кода есть несколько ограничений на выполнение поиска:

  • Только ветка по умолчанию считается. В большинстве случаев, это будет мастер ветвь.
  • Только файлы размером менее 384 КБ доступны для поиска.
  • Вы всегда должны включать хотя бы один поисковый запрос при поиске исходного кода. Например, поиск language:goнедействителен, пока amazing language:goесть.
  • В большинстве случаев результаты поиска могут показывать два фрагмента из одного файла, но в этом файле может быть больше результатов.
  • Вы не можете использовать следующие символы подстановки как часть вашего поискового запроса :
    . , : ; / \ ` ' " = * ! ? # $ & + ^ | ~ < > ( ) { } [ ]
    Поиск будет просто игнорировать эти символы.

Временное решение:

Если вам нужно выполнить поиск в одном репозитории, вы можете клонировать его локально и использовать grepдля точного поиска строки:

grep -r "system <<-" /repository_dir
Колодин
источник
355
Это ужасно. Почему они не исправят это? В идеале я должен иметь возможность искать с помощью регулярных выражений. Куда мне пойти, чтобы опротестовать это? :)
Даниэль Дарабос
10
Я попросил поддержки, и они ответили: «Возможность избегать специальных символов в поиске GitHub - часто запрашиваемая функция. Хотя я не могу давать никаких обещаний, я добавлю +1 к идее в нашем внутреннем списке запросов функций». , Я думаю, это зависит от размера индекса: слишком много кода содержит github.
ДенисКолодин
10
Я считаю, что это проблема индексации. Создание дословного поиска в двойных кавычках, вероятно, на порядок сложнее, чем нынешняя реализация. Выполнение поиска по регулярным выражениям, вероятно,> на 1 порядок сложнее или даже может вызвать проблемы .
Мэтт Коджан
15
как насчет буквенных строк, которые содержат точку ... как ldap.mycomp.com?!?!?! Мне не нужно регулярное выражение, я просто хочу поиск строки
Джейсон
1
Это не исправлено, потому что они используют эластичный поиск, поэтому им следует переиндексировать все данные с новым полем, чтобы принять это во внимание, это означает, что много места на диске.
Томас Деко
44

Вы можете использовать Google напрямую.

Как насчет этого?

"your_string_to_search" site::https://github.com
"your_string_to_search" site::https://gist.github.com
mrgloom
источник
81
Разве это не предполагает, что Google имеет доступ к вашему репо? Это не должно иметь место для частных репо.
Джоэл Б
1
он работает внутри репозитория, например:"alias agi=" site::https://github.com/robbyrussell/oh-my-zsh
сайты
1
@juanpastas Можете ли вы привести полный пример строки поиска?
mrgloom
15
Это имело больше смысла, когда Google все еще соблюдает цитаты для точного поиска.
Kylotan
1
@FullMetalFist Похоже да, например "your_string_to_search" site:https://github.com filetype:cpp
mrgloom
17

Сегодня я пытался найти точное совпадение filter classв файлах, названных logback.xmlв любом репозитории на Github. И я придумал следующий запрос, который сделал эту работу.

"filter class" in:file filename:logback.xml

Чтобы включить точное совпадение с кавычками, вам необходимо выполнить поиск с модификатором «in: file». Совпадения не совсем точны, слово «класс» должно следовать за словом «фильтр», но кажется, что между двумя словами может быть 0 или более пробелов или символов символов.

cessationoftime
источник
14
Я не вижу различий в поведении при поиске с или без in:file.
Даниэль Дарабос
2
я тоже, но тот факт, что «foo bar» в кавычках ищет соседние слова, является для меня очень полезной новостью
Бени Чернявский-Паскин
4

В дополнение к ответу @ mrgloom , если вы ищете код на определенном языке программирования в Github с помощью Google, вы можете сделать что-то подобное в строке поиска Google:

  • укажите конкретную строку, которую вы ищете, используя оператор поиска "intext:"
  • добавьте интересующий вас язык программирования, используя оператор "ext:" (т.е. "ext: py", "ext: R", "ext: rb" и т. д.)
  • искать во всех общедоступных репозиториях в Github с помощью оператора "site:", упомянутого mrgloom.

Пример:

intext:"%% 2 == 0" ext:R site:github.com

Результаты Google из примера

silviaegt
источник
1
intext:".set(" ext:JS site:github.comне работал: /
Адитья МП
Ты прав! Я не понимаю, почему ... Я пытался, intext:"set(" inurl:.js site:github.comи это вроде работает, но не совсем
silviaegt
1
Поэтому я продолжал читать, и, очевидно, круглые скобки игнорируются при поиске в Google. Однако я не понимаю, почему не работает оператор "ext". Согласно этому это недокументированный псевдоним для «filetype», но не уверен, почему «js» не будет считаться единым
silviaegt
1

Если ваш пакет находится в Debian, вы можете использовать их поиск кода, который поддерживает регулярные выражения: https://codesearch.debian.net/

Ян Катинс
источник