Cómo buscar en github para obtener coincidencias exactas (como lo que hacen las citas para Google)

216

Puedo buscar coincidencias exactas de google usando citas como "system <<-". ¿Cómo hacer lo mismo para github? No puedo hacer que funcione.

Solo un alumno
fuente

Respuestas:

128

No puedes Las reglas oficiales de búsqueda de GitHub :

Debido a la complejidad de la búsqueda de código, existen algunas restricciones sobre cómo se realizan las búsquedas:

  • Solo se considera la rama predeterminada. En la mayoría de los casos, esta será la rama maestra .
  • Solo archivos de menos de 384 KB se pueden buscar .
  • Siempre debe incluir al menos un término de búsqueda al buscar el código fuente. Por ejemplo, la búsqueda language:gono es válida, mientras que sí lo amazing language:goes.
  • Como máximo, los resultados de búsqueda pueden mostrar dos fragmentos del mismo archivo, pero puede haber más resultados dentro del archivo.
  • No puede usar los siguientes caracteres comodín como parte de su consulta de búsqueda :
    . , : ; / \ ` ' " = * ! ? # $ & + ^ | ~ < > ( ) { } [ ]
    La búsqueda simplemente ignorará estos símbolos.

Solución alterna:

Si necesita buscar en un único repositorio, puede clonarlo localmente y usarlo greppara encontrar la cadena exactamente:

grep -r "system <<-" /repository_dir
DenisKolodin
fuente
351
Este es terrible. ¿Por qué no lo arreglan? Idealmente debería poder buscar con una expresión regular. ¿A dónde voy para protestar esto? :)
Daniel Darabos
10
Pedí ayuda y me respondieron: "La capacidad de escapar de caracteres especiales en la búsqueda de GitHub es una característica solicitada con frecuencia. Si bien no puedo hacer ninguna promesa, haré +1 en la idea en nuestra lista interna de Solicitud de funciones". . Creo que depende del tamaño del índice: demasiados códigos contienen github.
DenisKolodin
10
Creo que este es un desafío de indexación. Hacer que la búsqueda textual de comillas dobles funcione es probablemente un orden de magnitud más difícil que la implementación actual. Es probable que hacer que una búsqueda de expresiones regulares funcione> 1 órdenes de magnitud más difícil o incluso posiblemente que requiera problemas .
Matt Kocaj el
14
¿Qué pasa con las cadenas literales que contienen puntos ... como ldap.mycomp.com?!?!?! No necesito una expresión regular, solo quiero una búsqueda de cadena LITERAL
Jason
1
Esto no se soluciona porque usan elasticsearch, por lo que deberían volver a indexar todos los datos con un nuevo campo para tenerlo en cuenta, esto significa mucho disco.
Thomas Decaux
44

Puedes usar Google directamente.

¿Qué tal esto?

"your_string_to_search" site::https://github.com
"your_string_to_search" site::https://gist.github.com
mrgloom
fuente
81
¿No supone eso que Google tiene acceso a su repositorio? Ese no debería ser el caso de los repositorios privados.
Joel B
1
funciona dentro de repos, como:"alias agi=" site::https://github.com/robbyrussell/oh-my-zsh
sitios
1
@juanpastas ¿puedes dar un ejemplo completo de cadena de búsqueda?
mrgloom
15
Esto tenía más sentido cuando Google aún respetaba las citas para forzar una búsqueda exacta.
Kylotan
1
@FullMetalFist Parece que sí, por ejemplo"your_string_to_search" site:https://github.com filetype:cpp
mrgloom
17

Hoy estaba tratando de buscar una coincidencia exacta filter classen los archivos nombrados logback.xmlen cualquier repositorio en Github. Y se me ocurrió la siguiente consulta que hizo el trabajo.

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

Para habilitar coincidencias exactas con comillas, debe seguir su búsqueda con el modificador "in: file". Las coincidencias no son del todo exactas, la palabra "clase" tendrá que seguir la palabra "filtro", pero parece que puede haber 0 o más espacios o caracteres de símbolos entre las dos palabras.

cessationoftime
fuente
14
No veo diferencia en el comportamiento cuando busco con o sin in:file.
Daniel Darabos
2
yo tampoco, pero el hecho de que "foo bar" entre comillas busca palabras adyacentes es una noticia muy útil para mí
Beni Cherniavsky-Paskin
3

Agregando a la respuesta de @ mrgloom , si está buscando código en un lenguaje de programación específico en Github usando Google, podría hacer algo como esto en la barra de búsqueda de Google:

  • indique la cadena específica que está buscando utilizando el operador de búsqueda "intext:"
  • agregue el lenguaje de programación que le interesa, utilizando el operador "ext:" (es decir, "ext: py", "ext: R", "ext: rb", etc.)
  • buscar en todos los repositorios públicos en Github usando el operador "site:" mencionado por mrgloom.

Ejemplo:

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

Resultados de Google del ejemplo

silviaegt
fuente
1
intext:".set(" ext:JS site:github.comno funcionó: /
Aditya MP
¡Tienes razón! No entiendo por qué ... Lo intenté intext:"set(" inurl:.js site:github.comy funciona un poco, pero no realmente
silviaegt
1
Así que seguí leyendo y aparentemente los paréntesis son ignorados en las búsquedas de Google. Sin embargo, no entiendo por qué el operador "ext" no funciona. De acuerdo con esto , es un alias indocumentado para "tipo de archivo", pero no estoy seguro de por qué "js" no sería considerado como uno
silviaegt