恕我直言,你可能連 GitHub 搜索都不會用 - 如何精準搜索的神仙技巧

你們好,我是大家的 前端章魚貓,一個不喜歡吃魚、又不喜歡喵的超級貓 ~javascript

今天給你們帶來的是 在 GitHub 上如何精準搜索的神仙技巧css

【前端GitHub】,專一於挖掘 GitHub 上優秀的前端開源項目,抹平你的前端信息不對稱,涵蓋 JavaScript、Vue、React、Node、小程序、Flutter、Deno、HTML、CSS、數據結構與算法 等等。前端

[前端GitHub] 地址:github.com/biaochenxuy…vue

如下爲【前端GitHub】的第 4 期內容。java

普通的搜索

相信通常人搜索項目時,都是直接搜索技術棧相關的項目。node

高級一點的搜索,會根據 最匹配、最多 Star 來進行排序、選擇相應的語言、選擇倉庫或者代碼來進行篩選。react

可是 GitHub 的搜索功能只支持以上這些而已嗎 ?jquery

No!git

若是你只會用以上的功能,那你知道的僅僅是 GitHub 搜索的冰山一角!程序員

GitHub 的搜索是很是強大的!下面介紹更高級的搜索技巧。

搜索語法

搜索 GitHub 時,你能夠構建匹配特定數字和單詞的查詢。

查詢大於或小於另外一個值的值

您可使用 >>=< 和 <= 搜索大於、大於等於、小於以及小於等於另外一個值的值。

查詢 示例
>*n* cats vue:>1000 匹配含有 "vue" 字樣、星標超過 1000 個的倉庫。
>=*n* vue topics:>=5 匹配含有 "vue" 字樣、有 5 個或更多主題的倉庫。
<*n* vue size:<10000 匹配小於 10 KB 的文件中含有 "vue" 字樣的代碼。
<=*n* vue stars:<=50 匹配含有 "vue" 字樣、星標不超過 50 個的倉庫。

您還可使用 範圍查詢 搜索大於等於或小於等於另外一個值的值。

查詢 示例
*n*..* vue stars:10..* 等同於 stars:>=10 並匹配含有 "vue" 字樣、有 10 個或更多星號的倉庫。
*..*n* vue stars:*..10 等同於 stars:<=10 並匹配含有 "vue" 字樣、有不超過 10 個星號的倉庫。

查詢範圍之間的值

您可使用範圍語法 *n*..*n* 搜索範圍內的值,其中第一個數字 n 是最低值,而第二個是最高值。

查詢 示例
*n*..*n* vue stars:10..50 匹配含有 "vue" 字樣、有 10 到 50 個星號的倉庫。

查詢日期

您能夠經過使用 >>=<<= 和 範圍查詢 搜索早於或晚於另外一個日期,或者位於日期範圍內的日期。

日期格式必須遵循 ISO8601 標準,即 YYYY-MM-DD(年-月-日)。

查詢 示例
>*YYYY*-*MM*-*DD* vue created:>2016-04-29 匹配含有 "vue" 字樣、在 2016 年 4 月 29 日以後建立的議題。
>=*YYYY*-*MM*-*DD* vue created:>=2017-04-01 匹配含有 "vue" 字樣、在 2017 年 4 月 1 日或以後建立的議題。
<*YYYY*-*MM*-*DD* vue pushed:<2012-07-05 匹配在 2012 年 7 月 5 日以前推送的倉庫中含有 "vue" 字樣的代碼。
<=*YYYY*-*MM*-*DD* vue created:<=2012-07-04 匹配含有 "vue" 字樣、在 2012 年 7 月 4 日或以前建立的議題。
*YYYY*-*MM*-*DD*..*YYYY*-*MM*-*DD* vue pushed:2016-04-30..2016-07-04 匹配含有 "vue" 字樣、在 2016 年 4 月末到 7 月之間推送的倉庫。
*YYYY*-*MM*-*DD*..* vue created:2012-04-30..* 匹配在 2012 年 4 月 30 日以後建立、含有 "vue" 字樣的議題。
*..*YYYY*-*MM*-*DD* vue created:*..2012-04-30 匹配在 2012 年 7 月 4 日以前建立、含有 "vue" 字樣的議題。

您也能夠在日期後添加可選的時間信息 THH:MM:SS+00:00,以便按小時、分鐘和秒進行搜索。 這是 T,隨後是 HH:MM:SS(時-分-秒)和 UTC 偏移 (+00:00)。

查詢 示例
*YYYY*-*MM*-*DD*T*HH*:*MM*:*SS*+*00*:*00* vue created:2017-01-01T01:00:00+07:00..2017-03-01T15:30:15+07:00 匹配在 2017 年 1 月 1 日凌晨 1 點(UTC 偏移爲 07:00)與 2017 年 3 月 1 日下午 3 點(UTC 偏移爲 07:00)之間建立的議題。 UTC 偏移量 07:00,2017 年 3 月 1 日下午 3 點。 UTC 偏移量 07:00
*YYYY*-*MM*-*DD*T*HH*:*MM*:*SS*Z vue created:2016-03-21T14:11:00Z..2016-04-07T20:45:00Z 匹配在 2016 年 3 月 21 日下午 2:11 與 2016 年 4 月 7 日晚上 8:45 之間建立的議題。

排除特定結果

您可使用 NOT 語法排除包含特定字詞的結果。 NOT 運算符只能用於字符串關鍵詞, 不適用於數字或日期。

查詢 示例
NOT hello NOT world 匹配含有 "hello" 字樣但不含有 "world" 字樣的倉庫。

縮小搜索結果範圍的另外一種途徑是排除特定的子集。 您能夠爲任何搜索限定符添加 - 前綴,以排除該限定符匹配的全部結果。

查詢 示例
-*QUALIFIER* vue stars:>10 -language:javascript 匹配含有 "vue" 字樣、有超過 10 個星號但並不是以 JavaScript 編寫的倉庫。
mentions:biaochenxuying -org:github 匹配說起 @biaochenxuying 且不在 GitHub 組織倉庫中的議題

對帶有空格的查詢使用引號

若是搜索含有空格的查詢,您須要用引號將其括起來。 例如:

某些非字母數字符號(例如空格)會從引號內的代碼搜索查詢中刪除,所以結果可能出乎意料。

使用用戶名的查詢

若是搜索查詢包含須要用戶名的限定符,例如 useractor 或 assignee,您可使用任何 GitHub 用戶名指定特定人員,或使用 @me 指定當前用戶。

查詢 示例
QUALIFIER:USERNAME author:biaochenxuying 匹配 @biaochenxuying 創做的提交。
QUALIFIER:@me is:issue assignee:@me 匹配已分配給結果查看者的議題

@me 只能與限定符一塊兒使用,而不能用做搜索詞,例如 @me main.workflow

高級的搜索

按倉庫名稱、說明或自述文件內容搜索

經過 in 限定符,您能夠將搜索限制爲倉庫名稱、倉庫說明、自述文件內容或這些的任意組合。

若是省略此限定符,則只搜索倉庫名稱和說明。

限定符 示例
in:name vue in:name 匹配其名稱中含有 "jquery" 的倉庫。
in:description vue in:name,description 匹配其名稱或說明中含有 "vue" 的倉庫。
in:readme vue in:readme 匹配其自述文件中說起 "vue" 的倉庫。
repo:owner/name repo:biaochenxuying/blog 匹配特定倉庫名稱,好比:用戶爲 biaochenxuying 的 blog 項目。

在用戶或組織的倉庫內搜索

要在 特定用戶或組織 擁有的全部倉庫中搜索,您可使用 user 或 org 限定符。

限定符 示例
user:*USERNAME* user:biaochenxuying forks:>=100 匹配來自 @biaochenxuying、擁有超過 100 復刻的倉庫。
org:*ORGNAME* org:github 匹配來自 GitHub 的倉庫。

按倉庫大小搜索

size 限定符使用 大於、小於和範圍限定符 查找匹配特定大小(以千字節爲單位)的倉庫。

限定符 示例
size:*n* size:1000 匹配剛好爲 1 MB 的倉庫。
size:>=30000 匹配至少爲 30 MB 的倉庫。
size:<50 匹配小於 50 KB 的倉庫。
size:50..120 匹配介於 50 KB 與 120 KB 之間的倉庫。

按關注者數量搜索

您可使用 followers 限定符以及大於、小於和範圍限定符基於倉庫擁有的關注者數量過濾倉庫。

限定符 示例
followers:*n* node followers:>=10000 匹配有 10,000 或更多關注者說起文字 "node" 的倉庫。
styleguide linter followers:1..10 匹配擁有 1 到 10 個關注者而且說起 "styleguide linter" 一詞的的倉庫。

按復刻數量搜索

forks 限定符使用大於、小於和範圍限定符指定倉庫應具備的復刻數量。

限定符 示例
forks:*n* forks:5 匹配只有 5 個復刻的倉庫。
forks:>=205 匹配具備至少 205 個復刻的倉庫。
forks:<90 匹配具備少於 90 個復刻的倉庫。
forks:10..20 匹配具備 10 到 20 個復刻的倉庫。

按星號數量搜索

您可使用 大於、小於和範圍限定符 基於倉庫具備的 星標 數量搜索倉庫

限定符 示例
stars:*n* stars:500 匹配剛好具備 500 個星號的倉庫。
stars:10..20 匹配具備 10 到 20 個星號、小於 1000 KB 的倉庫。
stars:>=500 fork:true language:vue 匹配具備至少 500 個星號,包括復刻的星號(以 vue 編寫)的倉庫。

按倉庫建立或上次更新時間搜索

你能夠基於建立時間或上次更新時間過濾倉庫。

  • 對於倉庫建立,您可使用 created 限定符;
  • 要了解倉庫上次更新的時間,您要使用 pushed 限定符。 pushed 限定符將返回倉庫列表,按倉庫中任意分支上最近進行的提交排序。

二者均採用日期做爲參數。 日期格式必須遵循 ISO8601 標準,即 YYYY-MM-DD(年-月-日)。

也能夠在日期後添加可選的時間信息 THH:MM:SS+00:00,以便按小時、分鐘和秒進行搜索。 這是 T,隨後是 HH:MM:SS(時-分-秒)和 UTC 偏移 (+00:00)。

日期支持 大於、小於和範圍限定符

限定符 示例
created:*YYYY-MM-DD* vue created:<2020-01-01 匹配具備 "vue" 字樣、在 2020 年以前建立的倉庫。
pushed:*YYYY-MM-DD* css pushed:>2020-02-01 匹配具備 "css" 字樣、在 2020 年 1 月以後收到推送的倉庫。
vue pushed:>=2020-03-06 fork:only 匹配具備 "vue" 字樣、在 2020 年 3 月 6 日或以後收到推送而且做爲復刻的倉庫。

按語言搜索

您能夠基於其編寫採用的主要語言搜索倉庫。

限定符 示例
language:*LANGUAGE* vue language:javascript 匹配具備 "vue" 字樣、以 JavaScript 編寫的倉庫。

按主題搜索

您能夠查找歸類爲特定 主題 的全部倉庫。

限定符 示例
topic:*TOPIC* topic:algorithm 匹配已歸類爲 "algorithm" 主題的倉庫。

估計又有不少人不知道 GitHub 上有話題一說的吧。

按主題數量搜索

您可使用 topics 限定符以及 大於、小於和範圍限定符 按應用於倉庫的 主題 數量搜索倉庫。

限定符 示例
topics:*n* topics:5 匹配具備五個主題的倉庫。
topics:>3 匹配超過三個主題的倉庫。

使用可視界面搜索

還可使用 search page 或 advanced search page 搜索 GitHub 哦。

這種搜索方式,估計就更少人知道了吧。

advanced search page 提供用於構建搜索查詢的可視界面。

您能夠按各類因素過濾搜索,例如倉庫具備的星標數或復刻數。 在填寫高級搜索字段時,您的查詢將在頂部搜索欄中自動構建。

高級搜索

按許可搜索

您能夠按其許可搜索倉庫。 您必須使用許可關鍵詞按特定許可或許可系列過濾倉庫。

限定符 示例
license:*LICENSE_KEYWORD* license:apache-2.0 匹配根據 Apache License 2.0 受權的倉庫。

按公共或私有倉庫搜索

您能夠基於倉庫是公共仍是私有來過濾搜索。

限定符 示例
is:public is:public org:github 匹配 GitHub 擁有的公共倉庫。
is:private is:private pages 匹配您有訪問權限且包含 "pages" 字樣的私有倉庫。

按公共或私有倉庫搜索

您能夠根據倉庫是否爲鏡像以及託管於其餘位置託管來搜索它們。

限定符 示例
mirror:true mirror:true GNOME 匹配是鏡像且包含 "GNOME" 字樣的倉庫。
mirror:false mirror:false GNOME 匹配並不是鏡像且包含 "GNOME" 字樣的倉庫。

基於倉庫是否已存檔搜索

你能夠基於倉庫是否已存檔來搜索倉庫。

限定符 示例
archived:true archived:true GNOME 匹配已存檔且包含 "GNOME" 字樣的倉庫。
archived:false archived:false GNOME 匹配未存檔且包含 "GNOME" 字樣的倉庫。

基於具備 good first issue 或 help wanted 標籤的議題數量搜索

您可使用限定符 help-wanted-issues:>n 和 good-first-issues:>n 搜索具備最少數量標籤爲 help-wanted 或 good-first-issue 議題的倉庫。

限定符 示例
good-first-issues:>n good-first-issues:>2 javascript 匹配具備超過兩個標籤爲 good-first-issue 的議題且包含 "javascript" 字樣的倉庫。
help-wanted-issues:>n help-wanted-issues:>4 react 匹配具備超過四個標籤爲 help-wanted 的議題且包含 "React" 字樣的倉庫。

學習

其實,以上不少內容的都是來自於 GitHub 的官方文檔,若是你還想學習更多技巧,請看

GitHub 官方文檔 : docs.github.com/cn

若是你還不瞭解或者不會使用 GitHub ,能夠看看這一章節:

Git 和 GitHub 學習資源docs.github.com/cn/free-pro…

最後

[前端GitHub] 地址:github.com/biaochenxuy…

平時如何發現好的開源項目,能夠看看這篇文章:GitHub 上能挖礦的神仙技巧 - 如何發現優秀開源項目

以爲有用 ?喜歡就收藏,順便點個贊吧,你的支持是我最大的鼓勵!

往期精文

點些評論及推薦好的開源項目哦!

相關文章
相關標籤/搜索