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.