玩轉(zhuǎn) Github:三分鐘教你如何用 Github 快速找到優(yōu)秀的開源項目
GitHub 各位應(yīng)該都很熟悉了,全球最大的開源社區(qū),也是全球最大的同性交友網(wǎng)站~~,但是大部分同學(xué)使用 GitHub 應(yīng)該就是通過別人的開源鏈接,點進(jìn)去下載對應(yīng)的項目,而真正使用 Github 來查找開源項目的還是少數(shù),
面試總得有幾個和所求崗位相關(guān)的項目,如果應(yīng)屆生、轉(zhuǎn)行的童鞋沒有項目,就靠簡單的 javaSE 或者其他語言基礎(chǔ)那只能說“你太難了”。
通過 Github ,你可以很方便的下載自己需要的項目,了解實時熱點的項目,通過對優(yōu)秀的開源項目的學(xué)習(xí),更好的進(jìn)行學(xué)習(xí)與提高

那么如何使用 Github 高效率的查找項目呢? 這篇文章帶你了解一下
倉庫分幾種?
本地倉庫:建立在本地的文件夾。
遠(yuǎn)程倉庫:建立在互聯(lián)網(wǎng)的服務(wù)器內(nèi)的文件夾。
分布式版本控制系統(tǒng)
配有兩個倉庫,在你的電腦上有一個 本地倉庫 ,在遠(yuǎn)程的服務(wù)器上有一個 遠(yuǎn)程倉庫 。
我們在提交文件的時候會先提交到本地倉庫,然后在有網(wǎng)絡(luò)的情況下,再從本地倉庫提交到網(wǎng)絡(luò)上的遠(yuǎn)程倉庫。
Git 就是一個典型的分布式版本控制系統(tǒng)
Github 就擔(dān)任了上述的遠(yuǎn)程倉庫這一角色,就是一個存放在外網(wǎng)服務(wù)器上的一個文件夾。并且 Github 是免費的開源的托管平臺
什么是 Git
Git (讀音為/g?t/)是一個開源的分布式版本控制系統(tǒng),可以有效、高速地處理從很小到非常大的項目版本管理。
GitHub 是一個面向開源及私有軟件項目的托管平臺,因為只支持 git 作為唯一的版本庫格式進(jìn)行托管,故名 GitHub。

Github 常用詞含義
watch:會持續(xù)收到項目的動態(tài)
fork:復(fù)制某個項目到自己的倉庫
star:點贊數(shù),表示對該項目表示認(rèn)可,點贊數(shù)越多的項目一般越火
clone:將項目下載到本地
follow:關(guān)注你感興趣的作者,會收到他們的動態(tài)
一個完整的項目界面

① 此處是項目作者名/項目名
② 此處是項目的點贊數(shù),和 fock 數(shù),越火的項目點贊和 fock 就會越多
③ 項目的 Description 和 Website 和 tags 也就是項目的說明和標(biāo)簽, 通過此處你可以一眼了解該項目的功能和簡介
④ 項目的 commits 提交數(shù) ,一般比較好的項目,維護(hù)會比較頻繁,更新也會頻繁,提交數(shù)就會多
⑤項目提交時間, 通過這里你可以看到項目的提交時間,防止自己下載了一些遠(yuǎn)古項目
⑥?README.md README.md 文件是一個項目的入門手冊,里面介紹了整個項目的使用、功能等等。所以 README 文件寫得好不好,關(guān)系到這個項目能不能更容易的被其他人了解和使用。
使用 Github 搜索項目
一般人用 Github 的步驟 直接搜索,選擇一下 Languages 設(shè)置下項目排序順序 就直接下載
然后就是克隆倉庫,閱讀 md,看項目源代碼,看不懂,關(guān)閉項目,刪除。

這樣是很難找到真正適合自己的項目的,
GitHub 里面有很多有價值的開源項目和代碼,如何在海量的代碼庫中搜索我們需要的信息,那么接下來將帶你了解下如何利用 GitHub 強大的搜索功能,來找到適合自己的項目
GitHub 的高級搜索
GitHub 有高級搜索功能,search/advanced 可以輸入關(guān)鍵字、代碼庫大小、包含作者、代碼語、代碼包含后綴文件名等。


這里我們假設(shè)正要學(xué)習(xí) Spring Boot,要找一個 Spring Boot 的 Demo 來進(jìn)行參考學(xué)習(xí)。
精準(zhǔn)搜索倉庫標(biāo)題、倉庫描述、README
in 關(guān)鍵詞限制搜索范圍
按照項目名/倉庫名搜索(大小寫不敏感)
(1)公式
in:name xxx?項目名包含 xxx
in:description xxx?項目描述包含 xxx
in:readme xxx?項目介紹文檔里含有 xxx
比如我搜索項目名里含有 Spring Boot 的?in:name Spring Boot
會發(fā)現(xiàn)項目數(shù)量由 17W 變成了 11W

搜索項目描述里含有 Spring Boot 的?in:description Spring Boot

stars 或 fork 數(shù)量去查找
一個項目 star 數(shù)的多少,一般代表該項目的受歡迎程度 越受歡迎的項目,star 數(shù)和 fork 數(shù)一定也不會少
(1)公式
stars:>xxx stars 數(shù)大于 xxx
stars:xx..xx stars 數(shù)在 xx…xx 之間
forks:>xxx forks 數(shù)大于 xxx
forks:xx..xx forks 數(shù)在 xx…xx 之間
查找star數(shù)大于等于5000的springboot項目
? ? spring boot stars:>=5000
查找fork數(shù)大于500的springcloud項目
? ? spring cloud forks:>500
查找fork在100到200之間并且stars數(shù)在80到100之間的springboot項目
? ? spring boot forks:100..200 stars:80..100
? ?
我們進(jìn)一步縮小范圍,Star 數(shù)量過濾,要求 Star 數(shù)量大于 3000
in:name spring boot starts :> 3000
? ?
可以看到只有一千多個項目供我們選擇了

按照地區(qū)和語言進(jìn)行搜索
很多時候我們的項目是要用我們會的語言,你找到了一個 Python 寫的好項目,但是沒學(xué)過 Python,下載了也看不懂,同時,為了更好的閱讀 README.md 幫助文檔以及項目注釋,我想很多同學(xué)都會想要下載中文的項目,當(dāng)然英語頂呱呱的請忽略
(1)公式
location:地區(qū)
language:語言
語言為javaScript ?
language:javaScript ?
地區(qū)為china
location: China
? ?
如果你要尋找使用 javascript 語言的國產(chǎn)項目,整個搜索條件就是:language:javascript location:china,從搜索結(jié)果來看,我們找到了五百多萬 javascript 項目,近 21000 多名地區(qū)信息填寫為 China 的 javascript 開發(fā)者,

根據(jù)倉庫大小搜索
如果你只是想找一些小型的項目進(jìn)行個人學(xué)習(xí)和開發(fā),不想找特別復(fù)雜的,那么使用 size 關(guān)鍵字查找簡單的 Demo,就成了你的首選
(1)公式
size:>= 數(shù)字
注意:100 代表 100Kb 單位為 Kb
根據(jù)倉庫是否在更新的搜索
尋找項目當(dāng)然是想要找到最新的項目,而不是好久都沒有更新的老項目了,
(1)公式
pushed:> YYYY-MM-DD?最后上傳日期大于 YYYY-MM-DD
created:> YYYY-MM-DD?創(chuàng)建日期大于 YYYY-MM-DD
比如我們想要尋找 2020 年最新更新的項目,可以用?pushed:>2020-01-03 Spring Boot?,這樣子就可以找到今年一月份之后更新的最新項目

根據(jù)某個人或組織進(jìn)行搜索
如果你想在 GitHub 上找一下某個大神是不是提交了新的項目,可以對他們進(jìn)行精準(zhǔn)搜索
(1)公式
user: name?查找某個用戶
org: name?查找某個組織
followers:>=xxx?查找關(guān)注者數(shù)量超過 xxx 的開發(fā)者
比方說我們想要找一下廖雪峰老師的 python 開源項目
user:MichaelLiao language:python
? ?

根據(jù)倉庫的 LICENSE 搜索
License 是很多人容易忽略的一個問題
開源項目的 License(項目授權(quán)協(xié)議) 有的開源項目作者明確禁止商用了,但是你不知情下載了,并且使用了,這就會很麻煩,“非常友好”的協(xié)議,比較出名的有這幾種:BSD、MPL(Mozilla)、Apache、MIT。這些協(xié)議不但允許項目的使用者使用開源庫,有些還允許對開源庫進(jìn)行修改并重新分發(fā)。因此用起來特別爽。上述這幾個協(xié)議在細(xì)節(jié)上有些小差異,大伙兒可以去它們官網(wǎng)瞧一下。
以下這個網(wǎng)站,詳細(xì)介紹了各個 License 的區(qū)別。
http://choosealicense.com/licenses/
(1)公式
-license:對應(yīng)協(xié)議
例如咱們要找協(xié)議是最為寬松的 Apache License 2 的代碼,
license:apache-2.0 Spring Boot
? ?

awesome 加強搜索
Awesome 似乎已經(jīng)成為不少 GitHub 項目喜愛的命名之一,Awesome 往往整合了大量的同一領(lǐng)域的資料,讓大家可以更好的學(xué)習(xí)。
(1)公式
awesome 關(guān)鍵字 awesome 系列一般是用來收集學(xué)習(xí)、工具、書籍類相關(guān)的項目
比如搜索優(yōu)秀的 python 相關(guān)的項目,包括框架、教程等

awesome-python,這個庫提供了各個領(lǐng)域常見的 python 庫支持。整體看下來,幾乎涵蓋了所有的常見的計算機(jī)領(lǐng)域,
熱門搜索(GitHub Trend 和 GitHub Topic)
GitHub Trend 頁面總結(jié)了每天/每周/每月周期的熱門 Repositories 和 Developers,你可以看到在某個周期處于熱門狀態(tài)的開發(fā)項目和開發(fā)者

GitHub Topic 展示了最新和最流行的討論主題,在這里你不僅能夠看到開發(fā)項目,還能看到更多非開發(fā)技術(shù)的討論主題,
