大家好,我是你們的 前端章魚貓,一個不喜歡喵、又不喜歡吃魚的超級貓 ~
今天給大家帶來的是 在 GitHub 上如何精準搜尋的神仙技巧。
【前端GitHub:https://github.com/biaochenxuying/FrontEndGitHub 】,專注於挖掘 GitHub 上優秀的前端開源專案,專注於挖掘 GitHub 上優秀的前端開源專案,並以專題的形式推薦,每專題大概 10 個好專案,每週會有一到三篇精華文章推送。涵蓋 JavaScript、Vue、React、Node、小程式、Flutter、Deno、HTML、CSS、資料結構與演算法 等等。
平時如何發現好的開源專案,可以看看這篇文章:GitHub 上能挖礦的神仙技巧 - 如何發現優秀開源專案 。
以下為【前端GitHub】的第 4 期內容。
普通的搜尋
相信一般人搜尋專案時,都是直接搜尋技術棧相關的專案。
高階一點的搜尋,會根據 最匹配、最多 Star 來進行排序、選擇相應的語言、選擇倉庫或者程式碼來進行篩選。
但是 GitHub 的搜尋功能只支援以上這些而已嗎 ?
No!
如果你只會用以上的功能,那你知道的僅僅是 GitHub 搜尋的冰山一角!
GitHub 的搜尋是非常強大的!下面介紹更高階的搜尋技巧。
搜尋語法
搜尋 GitHub 時,你可以構建匹配特定數字和單詞的查詢。
查詢大於或小於另一個值的值
您可以使用 >
、>=
、<
和 <=
搜尋大於、大於等於、小於以及小於等於另一個值的值。
查詢 | 示例 |
---|---|
>*n* |
vue 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 組織倉庫中的議題 |
對帶有空格的查詢使用引號
如果搜尋含有空格的查詢,您需要用引號將其括起來。 例如:
- cats NOT "hello world" 匹配含有 "vue" 字樣但不含有 "hello world" 字樣的倉庫。
- build label:"bug fix" 匹配具有標籤 "bug fix"、含有 "build" 字樣的議題。
某些非字母數字符號(例如空格)會從引號內的程式碼搜尋查詢中刪除,因此結果可能出乎意料。
使用使用者名稱的查詢
如果搜尋查詢包含需要使用者名稱的限定符,例如 user
、actor
或 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 ,可以看看這一章節:
Git 和 GitHub 學習資源 :https://docs.github.com/cn/free-pro-team@latest/github/getting-started-with-github/git-and-github-learning-resources
最後
[前端GitHub] 地址:https://github.com/biaochenxuying/FrontEndGitHub
平時如何發現好的開源專案,可以看看這篇文章:GitHub 上能挖礦的神仙技巧 - 如何發現優秀開源專案。
覺得有用 ?喜歡就收藏,順便點個贊吧,你的支援是我最大的鼓勵!
往期精文