Tam eşleşmeleri almak için github'da nasıl arama yapılır (tırnak işaretleri Google için ne yapar gibi)


218

Gibi alıntılar kullanarak Google'dan tam eşleşmeleri arayabilirim "system <<-". Benzer şey github için nasıl yapılır? Çalışmasını sağlayamıyorum.

Yanıtlar:


130

Yapamazsın. Resmi GitHub arama kuralları :

Arama kodunun karmaşıklığı nedeniyle, aramaların nasıl gerçekleştirileceğiyle ilgili birkaç kısıtlama vardır:

  • Yalnızca varsayılan dal dikkate alınır. Çoğu durumda, bu ana dal olacaktır.
  • Yalnızca 384 KB'den küçük dosyalar aranabilir.
  • Kaynak kodu ararken her zaman en az bir arama terimi eklemelisiniz. Örneğin, ararken language:gogeçerli değildir amazing language:go.
  • Arama sonuçları en fazla aynı dosyadan iki parça gösterebilir , ancak dosya içinde daha fazla sonuç olabilir.
  • Arama sorgunuzun bir parçası olarak aşağıdaki joker karakterleri kullanamazsınız :
    . , : ; / \ ` ' " = * ! ? # $ & + ^ | ~ < > ( ) { } [ ]
    Arama yalnızca bu simgeleri yoksayar.

Çözüm:

Tek bir depoda arama yapmanız gerekiyorsa, yerel olarak klonlayabilir ve grepdizeyi tam olarak bulmak için kullanabilirsiniz :

grep -r "system <<-" /repository_dir

354
Bu korkunç. Neden düzeltmiyorlar? İdeal olarak bir regex ile arama yapabilmeliyim. Bunu protesto etmek için nereye gideceğim? :)
Daniel Darabos

10
Bir destek sordum ve cevap verdiler: "GitHub aramasında özel karakterlerden kaçma yeteneği sıkça talep edilen bir özellik. Herhangi bir söz veremesem de, dahili Özellik İsteği listemizdeki fikri + 1'leyeceğim." . Ben dizin boyutu bağlıdır düşünüyorum: çok fazla kod github içerir.
DenisKolodin

10
Bunun bir indeksleme zorluğu olduğuna inanıyorum. Sözlü çift tırnaklı arama çalışmasının yapılması, mevcut uygulamadan daha büyük bir büyüklük sırasıdır. Normal ifade araması yapmak büyük olasılıkla> 1 büyüklükteki siparişlerin daha zor, hatta muhtemelen sorun istemesidir .
Matt Kocaj

14
nokta içeren değişmez dizgilere ne dersiniz ... like ldap.mycomp.com?!?!?! Normal ifadeye ihtiyacım yok, sadece LITERAL dize araması istiyorum
Jason

1
Bu, elasticsearch kullandıkları için sabit değildir, bu nedenle tüm verileri dikkate almak için yeni bir alanla yeniden endekslemeleri gerekir, bu da çok fazla disk anlamına gelir.
Thomas Decaux

44

Google'ı doğrudan kullanabilirsiniz.

Buna ne dersin?

"your_string_to_search" site::https://github.com
"your_string_to_search" site::https://gist.github.com

81
Bu, Google'ın deponuza erişimi olduğunu varsaymıyor mu? Özel depolar için durum böyle olmamalı.
Joel B

1
depoların içinde çalışır, gibi:"alias agi=" site::https://github.com/robbyrussell/oh-my-zsh
siteler

1
@juanpastas arama dizesine tam bir örnek verebilir misiniz?
mrgloom

15
Google, tam bir aramayı zorlamak için teklifleri hala onurlandırdığında bu daha anlamlı oldu.
Kylotan

1
@FullMetalFist Evet gibi görünüyor, örneğin"your_string_to_search" site:https://github.com filetype:cpp
mrgloom

17

Bugün Github'daki herhangi bir repoda filter classadlandırılan dosyalarda tam bir eşleşme aramaya çalışıyordum logback.xml. Ve ben bu işi yapan aşağıdaki sorgu ile geldi.

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

Tırnaklarla tam eşleşmeleri etkinleştirmek için, aramanızı "in: file" değiştiricisiyle takip etmeniz gerekir. Eşleşmeler tam olarak doğru değil, "sınıf" kelimesi "filtre" kelimesini takip etmek zorunda kalacak, ancak iki kelime arasında 0 veya daha fazla boşluk veya simge karakteri olabileceği anlaşılıyor.


14
İle veya olmadan arama yaparken hiçbir davranış farkı görmüyorum in:file.
Daniel Darabos

2
ben de, ama tırnak içinde "foo bar" bitişik kelimeleri arama gerçeği benim için çok yararlı bir haber
Beni Cherniavsky-Paskin

3

@ Mrgloom'un cevabına ek olarak, Google'ı kullanarak Github'da belirli bir programlama dilinde kod arıyorsanız Google'ın arama çubuğunda şöyle bir şey yapabilirsiniz:

  • "intext:" arama operatörünü kullanarak aradığınız belirli dizeyi belirtin
  • "ext:" operatörünü kullanarak ilgilendiğiniz programlama dilini ekleyin (örn. "ext: py", "ext: R", "ext: rb" vb.)
  • "site:" operatörü mrgloom kullanarak Github tüm halka açık depolarda arama.

Misal:

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

Örnekteki Google Sonuçları


1
intext:".set(" ext:JS site:github.comişe yaramadı: /
Aditya MP

Haklısın! Neden anlamıyorum ... Denedim intext:"set(" inurl:.js site:github.comve işe yarıyor, ama gerçekten değil
silviaegt

1
Bu yüzden okumaya devam ettim ve görünüşe göre parantez google aramalarında göz ardı edildi Ancak, "ext" operatörünün neden çalışmadığını anlamıyorum. Göre bu o "filetype" için bir belgesiz diğer adıdır, ama tabii niçin "js" biri olarak kabul olmaz değil
silviaegt

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.