GitHub 搜尋技巧 - 適合新手找優質專案的 GitHub 技巧

2020-11-13 13:01:02

很多小夥伴,尤其是在校學生,或者說想轉軟體開發,搞計算機的朋友,總會問一個問題:找工作,沒專案經驗怎麼辦?
關於這個問題了,就是上網找開源專案,自學吸收,這是一個獲取專案經驗比較靠譜的途徑
於是就有很多人問,網上的開源專案這麼多,怎麼找到比較好的,而且持續更新的優質開源專案呢?

首先,開啟 Github ,滑鼠鎖定 搜尋欄

比如我想學習 spring boot ,那我可以這樣搜尋:

搜尋需求:匹配其名稱中含有 "spring boot" 的倉庫(專案)

in:name spring boot # 匹配其名稱中含有 "spring boot" 的倉庫(專案)

在這裡插入圖片描述
一共搜尋出來 13.5萬個結果,這樣的搜尋出來的倉庫(專案)太廣泛了,因此,我們可以限定一下搜尋條件。

比如我想查詢比較受歡迎的專案 ,那,應該怎麼新增搜尋條件呢?我們都知道一個專案的的受歡迎程度是與 stars 數目掛鉤的。

因此,我們可以這樣寫:

搜尋需求:匹配其名稱中含有 "spring boot" 且 stars 數大於 3000 的倉庫(專案)

in:name spring boot stars:>3000 # 匹配其名稱中含有 "spring boot"  
                                # 且 stars 數大於 3000 的倉庫(專案)

在這裡插入圖片描述
加上限制條件 3000 stars,專案數從 13.5 萬直接銳減到 16 個。

這個 3000 大家視情況更改,現在大家發現沒有,搜尋的適合的專案越來越少了,也越來越精確了。

你也可以再給搜尋新增條件:

搜尋需求:匹配其名稱中含有 "spring boot" 且 stars 數大於 3000,forks 數大於 2000 的倉庫(專案)

in:name spring boot stars:>3000 forks:>2000 # 匹配其名稱中含有 "spring boot" 
                                           # stars 數大於 3000
                                           # forks 數大於 2000 的倉庫(專案)
                                           # 解釋一下forks,即程式碼倉庫(專案)的復刻數,比如說這個專案不錯
                                           # 某人就直接克隆到自己的倉庫裡面,forks 數越大說明克隆的人越多

在這裡插入圖片描述
現在直接剩下 8 個專案了。有人說,雖然只剩下幾個專案了,但是都是高星專案,太大了,我是一個小白,看不懂,學不來怎麼辦?

那我可以再換一種搜尋方式
我們可以搜尋 readme.md(讀我檔案) 1裡面的關鍵字,因此我們可以這樣搜尋:

搜尋需求:匹配其讀我檔案中提及 "spring boot" 的倉庫(專案)

in:readme spring boot # 匹配其讀我檔案中提及 "spring boot" 的倉庫(專案)。

在這裡插入圖片描述

這時候你會發現搜尋結果 25 萬個左右,那我們可以再限定一下搜尋詞再搜尋

搜尋需求:匹配其讀我檔案中提及 "spring boot" 且 stars 數大於 2000 的倉庫(專案)

in:readme spring boot stars:>2000 # 匹配其讀我檔案中提及 "spring boot" 
								  # 且 stars 數大於 2000 的倉庫(專案)

在這裡插入圖片描述
這時候你發現只有 180 個左右的 repositories(倉庫) 了。

這時候你去篩選一下就特別容易了。

當下微服務相當地火是吧?那我們搜尋一下微服務,那我們怎麼搜呢?我們用另外一種方式搜尋,在description(描述)2裡面搜:

搜尋需求:匹配其名稱或說明中含有 "微服務" 的倉庫(專案)

in:description 微服務 # 匹配其名稱或說明中含有 "微服務" 的倉庫(專案)

在這裡插入圖片描述

我們看到有 1 萬多個專案,有各種各樣的程式語言,現在我們指定一種程式語言,比如:Java
搜尋需求:匹配其名稱或說明中含有 "微服務" 且指定開發語言為 Java 的倉庫(專案)

in:description 微服務 language:java # 匹配其名稱或說明中含有 "微服務" 且指定開發語言為 Java 的倉庫(專案)                                

在這裡插入圖片描述

這時候我們發現只有 5000 多個專案了

因為有一些專案更新地十分頻繁,而有一些呢很久都沒更新了,那我們可以再加限定搜尋詞 pushedpushed 是指最後的更新時間:

搜尋需求:匹配其名稱或說明中含有 "微服務" ,指定開發語言為 Java ,在 2020-09-03 之後提交更新的的倉庫(專案)

'''匹配其名稱或說明中含有 "微服務" ,指定開發語言為 Java ,
   在 2020-09-03 之後提交更新的的倉庫(專案)'''
in:description 微服務 language:java pushed:>2020-09-03                                                      

在這裡插入圖片描述
這時候呢我們發現只有 510 個專案了,這些專案就屬於更新比較活躍比較頻繁的專案。

如果我想檢視英文的專案,比如關於爬蟲的專案,爬蟲的英文是 web crawler 或者 spider.

我們可以直接在描述裡面搜 spider(描述裡面有英文的一般都是英文專案,有中文的99.99%是國人開發的專案)。
搜尋需求:一個英文的 Python 爬蟲倉庫(專案),要求 3000 stars 以上,且最近一個月有過更新

'''一個英文的 Python 爬蟲倉庫(專案),要求 3000 stars 以上,且最近一個月有過更新'''
in:description spider language:python stars:>3000 pushed:>2020-10-10

在這裡插入圖片描述

可以看到現在只有兩個倉庫(專案)了,第 1 個專案為英文專案,第 2 個專案為中文專案,所以說朋友們,description(描述)或者 readme裡面包含英文的專案不一定是國外專案,但是description(描述)或者 readme 裡面包含中文的專案一定是國人的專案。

通過上面的演示,朋友們應該都知道通過 描述和 readme 搜尋的強大了吧?畢竟通過專案名是作者的個人主觀上起名的,有一些專案用到的框架、資料庫等等在專案名裡面不一定能體現出來,但是一個好的專案用到的技術框架一定會寫在描述或者redme裡面。

比如你想搜尋 spring security 框架,這個就不能在專案名裡面搜尋了對吧?

一般專案用了什麼框架什麼技術都會寫在 readme.md 裡面對吧
那我們可以這麼搜尋

搜尋需求:使用了 spring security 框架的 Java 專案,stars 大於 2000 ,在 2020-08-07 之後提交過更新

'''使用了 spring security 框架的 Java 專案,stars 大於 2000 
   在 2020-08-07 之後提交過更新'''
in:readme spring security language:java stars:>2000 pushed:>2020-08-07

這樣搜尋出來就只有 62 個專案了

當然 ,以上教學只匹配了一個關鍵詞,但是實際上是可以匹配多個關鍵詞的,比如:

in:description mysql redis spring boot stars:>2000 # 匹配其名稱或說明中含有 "mysql" "redis" "spring boot"  的倉庫

如果你的專案有框架或者技術要求,建議如上方式搜尋。

上面是講怎麼搜尋一個開源專案,
那下面我們來講怎麼看一個開源專案的要點

比如我們想學這個專案,開啟它
看它值不值得學,先看它的介紹有哪些技術點符不符合你的胃口
看它最新的更新的時間然後看它的readme 檔案
寫的比較全的,程式碼比較完善的,組織結構好的就可以研究

如果各位看客只是想單純的想和看微博熱搜和微博話題那樣看 GitHub 的熱門排行,那也ok

GitHub 有兩個熱門欄目,分別是 GitHub TrendGitHub Topic

本文總結
本文總共介紹從 3 個方面搜尋專案的技巧,分別是:
1.通過 in:name 方式,即匹配倉庫(專案)名中是否含某關鍵詞
2.通過 in:description 方式,即匹配倉庫(專案)名或描述中是否含某關鍵詞
3.通過 in:readme 方式,即匹配讀我檔案中是否含某關鍵詞

更多有關 GitHub 搜尋技巧請點選:https://docs.github.com/cn/free-pro-team@latest/github/searching-for-information-on-github/searching-for-repositories

ps:如果我的博文對你有幫助,歡迎點贊收藏 ~(゜ - ゜) つロ 乾杯~
如有疑問,歡迎留言討論~


  1. 在這裡插入圖片描述 ↩︎

  2. 在這裡插入圖片描述 ↩︎