Как мне экранировать символы при поиске кода GitHub?

104

Я пытаюсь использовать поиск кода GitHub для поиска некоторых строк кода, содержащих такие символы, как =, +и т. Д.

Насколько я понимаю из https://help.github.com/articles/searching-code/#considerations-for-code-search , эти символы являются подстановочными знаками и должны быть экранированы, иначе они будут проигнорированы.

Вот пример: «if \ (done - True \)» , а другой: «if (done - True)» .

Оба возвращают одно и то же "your query contains a character that is ignored"предупреждение в правой части строки поиска. Мой побег, похоже, ничего не делает, и результаты, которые я получаю, заключаются в игнорировании символов.

Эли Роуз - ВОССТАНОВЛЕНИЕ МОНИКИ
источник

Ответы:

123

Я не думаю, что вы можете экранировать символы для github

Из документа с кодом поиска :

Вы не можете использовать следующие подстановочные знаки в качестве части поискового запроса: . ,:; / \ `'" = *!? # $ & + ^ | ~ <> () {} [] . Поиск просто игнорирует эти символы.

ЧинтанШах25
источник
12
Да, я это видел. Нет возможности избежать этих персонажей? Это означает, что если я хочу найти в своем репо x += 2, нет способа сделать это?
Эли Роуз - ВОССТАНОВЛЕНИЕ МОНИКИ
1
нет, я думаю, что github настроил elasticsearch таким образом только для уменьшения сложности
ChintanShah25
14
О чем @?
User
21
столкнулся с этим; бесполезный поиск кода! Мне нужно найти все экземпляры :okи :lockedв виде Ruby On Rails кодового. Дрянной поиск Github не позволяет этого.
3
@User: Согласно этому вопросу , @был упомянут как не включенный в список, но ответа пока нет.
Quantum Mechanic
4

Вам нужно будет сделать это локально. Вот несколько вариантов из https://stackoverflow.com/a/38288679/362202 :

  • клонируйте исходный сайт github вашей компании
  • сделать локально a git grep, который поддерживает базовое регулярное выражение или расширенное регулярное выражение POSIX ( git grep -E)
  • или поиском кирки (git log --all -S...
  • или git rev-list --all|grep xxxкоторый также позволяет использовать регулярное выражение

Эти стратегии не будут работать для поиска по всему github, что очень досадно.

Ран Эвер-Хадани
источник
4
Что делать, если у вас есть более 1000 репозиториев для поиска?
hfm
2
Что, если бы я хотел поделиться результатами с кем-то еще ... как можно ожидать от сайта вроде github, который предположительно предназначен для совместной работы?
Кристиан,
2

есть один больше (некоторые может сказать , позорный) пол -решение / обходной путь: с помощью Google ...

В поле поиска введите site:repo-urlв дополнение к вашим ключевым словам.

Я искал action$в репозитории redux-logic и, по крайней мере, смог отфильтровать все другие нежелательные action(без знака доллара) результаты, которые появлялись в поиске github. В гугле набрал (обратите внимание на кавычки):

сайт: https: //github.com/jeffbski/redux-logic "действие $"

К сожалению, Google не перечислит все результаты. Вот почему вначале я написал полуфабрикат . Таким образом, вы можете быстро испытать удачу с Google, если вы не найдете то, что искали, отступите к проверке репозитория git + поиск с помощью автономных инструментов, таких как vscode, intellij или cmd-line-tools, как предлагает @Ran Эвер-Хадани

Я надеюсь, что скоро на github появится совершенно новая функция поиска, которую пользователи смогут полюбить, а не ненавидеть.

Farukg
источник