Cara mencari di github untuk mendapatkan kecocokan yang tepat (seperti apa yang dilakukan kutipan untuk Google)

216

Saya dapat mencari kecocokan persis dari google dengan menggunakan tanda kutip like "system <<-". Bagaimana melakukan hal serupa untuk github? Saya tidak bisa membuatnya bekerja.

Hanya seorang pembelajar
sumber

Jawaban:

128

Kamu tidak bisa Aturan pencarian GitHub resmi :

Karena kerumitan kode pencarian, ada beberapa batasan tentang bagaimana pencarian dilakukan:

  • Hanya cabang default yang dipertimbangkan. Dalam kebanyakan kasus, ini akan menjadi cabang utama .
  • Hanya file yang lebih kecil dari 384 KB yang dapat dicari.
  • Anda harus selalu menyertakan setidaknya satu istilah pencarian saat mencari kode sumber. Misalnya, pencarian language:gotidak valid, sedangkan amazing language:gosedang.
  • Paling-paling, hasil pencarian dapat menampilkan dua fragmen dari file yang sama, tetapi mungkin ada lebih banyak hasil di dalam file.
  • Anda tidak dapat menggunakan karakter wildcard berikut sebagai bagian dari permintaan pencarian Anda :
    . , : ; / \ ` ' " = * ! ? # $ & + ^ | ~ < > ( ) { } [ ]
    Pencarian hanya akan mengabaikan simbol-simbol ini.

Penanganan masalah:

Jika Anda perlu mencari dalam satu repositori, Anda dapat mengkloningnya secara lokal dan menggunakannya grepuntuk menemukan string dengan tepat:

grep -r "system <<-" /repository_dir
DenisKolodin
sumber
351
Ini mengerikan. Mengapa mereka tidak memperbaikinya? Idealnya saya harus bisa mencari dengan regex. Di mana saya pergi untuk memprotes ini? :)
Daniel Darabos
10
Saya telah meminta dukungan dan mereka menjawab: "Kemampuan untuk keluar dari karakter khusus dalam pencarian GitHub adalah fitur yang sering diminta. Meskipun saya tidak dapat membuat janji, saya akan memberi +1 gagasan pada daftar Permintaan Fitur internal kami." . Saya pikir itu tergantung pada ukuran indeks: mengandung terlalu banyak kode github.
DenisKolodin
10
Saya percaya ini adalah tantangan pengindeksan. Membuat pekerjaan pencarian kata kunci ganda kata demi kata lebih sulit daripada penerapannya saat ini. Membuat pekerjaan pencarian regex mungkin> 1 perintah besarnya lebih sulit atau bahkan mungkin meminta masalah .
Matt Kocaj
14
bagaimana dengan string literal yang berisi titik ... seperti ldap.mycomp.com?!?!?! Saya tidak memerlukan regex, saya hanya ingin pencarian string LITERAL
Jason
1
Ini bukan perbaikan karena mereka menggunakan elasticsearch, jadi mereka harus mengindeks ulang semua data dengan bidang baru untuk dipertimbangkan, ini berarti banyak disk.
Thomas Decaux
44

Anda dapat menggunakan Google secara langsung.

Bagaimana dengan ini?

"your_string_to_search" site::https://github.com
"your_string_to_search" site::https://gist.github.com
mrgloom
sumber
81
Bukankah itu beranggapan bahwa Google memiliki akses ke repo Anda? Seharusnya tidak demikian halnya dengan repo pribadi.
Joel B
1
ia bekerja di dalam repo, seperti:"alias agi=" site::https://github.com/robbyrussell/oh-my-zsh
situs
1
@ juanpastas dapatkah Anda memberikan contoh lengkap string pencarian?
mrgloom
15
Ini menjadi lebih masuk akal ketika Google masih menghargai tanda kutip untuk memaksa pencarian yang tepat.
Kylotan
1
@FullMetalFist Sepertinya ya, misalnya"your_string_to_search" site:https://github.com filetype:cpp
mrgloom
17

Hari ini saya mencoba mencari kecocokan persis filter classdalam file yang disebutkan logback.xmldalam repo apa pun di Github. Dan saya datang dengan pertanyaan berikut yang melakukan pekerjaan.

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

Untuk mengaktifkan pencocokan tepat dengan kutipan, Anda harus mengikuti pencarian Anda dengan pengubah "in: file". Kecocokannya tidak terlalu tepat, kata "kelas" harus mengikuti kata "filter", tetapi tampaknya ada 0 atau lebih spasi atau simbol karakter antara dua kata.

lenyapnya waktu
sumber
14
Saya tidak melihat perbedaan dalam perilaku saat mencari dengan atau tanpa in:file.
Daniel Darabos
2
saya juga tidak, tetapi fakta bahwa "foo bar" dalam tanda kutip mencari kata-kata yang berdekatan adalah berita yang sangat berguna bagi saya
Beni Cherniavsky-Paskin
3

Menambahkan ke jawaban @ mrgloom , jika Anda mencari kode dalam bahasa pemrograman tertentu di Github menggunakan Google, Anda dapat melakukan sesuatu seperti ini di bilah pencarian Google:

  • nyatakan string spesifik yang Anda cari menggunakan operator pencarian "intext:"
  • tambahkan bahasa pemrograman yang Anda minati, menggunakan operator "ext:" (yaitu "ext: py", "ext: R", "ext: rb", dll.)
  • cari di semua repo publik di Github menggunakan "situs:" operator mrgloom disebutkan.

Contoh:

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

Hasil Google dari contoh

silviaegt
sumber
1
intext:".set(" ext:JS site:github.comtidak bekerja: /
Aditya MP
Kamu benar! Saya tidak mengerti mengapa ... saya mencoba intext:"set(" inurl:.js site:github.comdan itu agak berhasil, tetapi tidak benar
silviaegt
1
Jadi saya terus membaca dan tampaknya kurung diabaikan dalam pencarian google. Namun, saya tidak mengerti mengapa operator "ext" tidak bekerja. Menurut ini, ini adalah alias tanpa dokumen untuk "filetype", tetapi tidak yakin mengapa "js" tidak akan dianggap sebagai satu
silvia