現(xiàn)階段寫(xiě)代碼,很大程度上都是依賴(lài)于各種開(kāi)源庫(kù),不管是在 Github 還是 Gitlab ,亦或是其它地方。如何高效地找到我們所需要的合適的庫(kù),成了開(kāi)發(fā)者必備的一項(xiàng)基本技能。Hillary Nyakundi 在他的文章 《GitHub Search Tips – How to Search Issues, Repos, and More Effectively on GitHub》 中分享了他的經(jīng)驗(yàn),我們這里提煉一下分享給大家。 搜索 issues在 Github 上,我們可以使用常見(jiàn)的過(guò)濾器、排序和搜索技術(shù)來(lái)查找特定的 Issues 和 Pull Requests。大多數(shù)開(kāi)源庫(kù)作者傾向于使用 issues 來(lái)標(biāo)記項(xiàng)目,這使得開(kāi)發(fā)者可以更容易找到合適的項(xiàng)目。那么我們可以使用以下一些技巧來(lái)對(duì) issues 進(jìn)行搜索。 is:issue is:open label:beginner :這將列出所有具有開(kāi)放和標(biāo)記為 beginner 的問(wèn)題的項(xiàng)目is:issue is:open label:easy :這將列出所有標(biāo)記為 easy 的未解決問(wèn)題is:issue is:open label:first-timers-only :這列出了所有歡迎初學(xué)者貢獻(xiàn)的未解決問(wèn)題。is:issue is:open label:good-first-bug :列出帶有標(biāo)記為 good-first-bug 的未解決問(wèn)題的項(xiàng)目,以吸引貢獻(xiàn)者參與其中。is:issue is:open label:'good first issue' :這將列出所有帶有標(biāo)簽 good first issue 的未解決問(wèn)題,這意味著它適合初學(xué)者入門(mén)。is:issue is:open label:starter :這列出了 GitHub 上所有標(biāo)記為 starter 的未解決問(wèn)題。is:issue is:open label:up-for-grabs :如果我們具備必要的技能,這會(huì)列出可以處理的未解決問(wèn)題。no:project type:issue is:open :這將列出所有未分配給特定項(xiàng)目的未解決問(wèn)題。no:milestone type:issue is:open :很多時(shí)候,項(xiàng)目都使用里程碑進(jìn)行跟蹤。但是,如果我們想查找未跟蹤的問(wèn)題,此搜索查詢(xún)將為我們列出這些項(xiàng)目。no:label type:issue is:open - 這列出了所有未標(biāo)記的未解決問(wèn)題。is:issue is:open no:assignee - 這顯示尚未分配給某人的所有未解決問(wèn)題。
搜索存儲(chǔ)庫(kù)默認(rèn)情況下,我們將在搜索欄中鍵入存儲(chǔ)庫(kù)名稱(chēng),然后我們會(huì)得到一些搜索結(jié)果。但這樣找到確切目標(biāo)的概率比較低。以下是一些縮小搜索范圍的方法。 按名稱(chēng)、描述/自述文件查找按這種方式搜索的一個(gè)要點(diǎn)是:搜索短語(yǔ)應(yīng)該以 in 限定符開(kāi)始。如: - 使用
in:name :例如我們想搜索與 Data Science 相關(guān)的信息,就可以使用 Data Science in:name ,這將列出 repo 名稱(chēng)中包含 Data Science 的存儲(chǔ)庫(kù) - 使用
in:description :如果我們想查找具有特定描述的存儲(chǔ)庫(kù),如描述中包含 freeCodeCamp 的 repo,則可以使用 freecodecamp in:description - 使用
in:readme :如果想查找在 README 文件中包含 freeCodeCamp 的 repo,則可以使用 freecodecamp in:readme - 使用
in:topic :如果要查找主題中列出了 freecodecamp 的 repo,則可以使用 freecodecamp in:topic
當(dāng)然,我們還可以組合多個(gè)搜索查詢(xún)以進(jìn)一步縮小搜索范圍。 按 Stars 或 Forks 查找我們還可以根據(jù)項(xiàng)目的 Star 數(shù)和 Fork 數(shù)來(lái)搜索存儲(chǔ)庫(kù)。這使我們更容易了解該項(xiàng)目的受歡迎程度。如: - 使用
stars:n :如果我們想搜索一個(gè)擁有 1000 顆星的 repo,可以使用 stars:1000 ,這將列出恰好有 1000 顆星的存儲(chǔ)庫(kù)。 - 使用
forks:n :如果我們想查找分支少于 100 個(gè)的存儲(chǔ)庫(kù),我們的搜索將是:forks:<100 。
我們可以使用諸如 <、>、<=、>= & .. 之類(lèi)的關(guān)系運(yùn)算符來(lái)幫助我們進(jìn)一步縮小搜索范圍。 按語(yǔ)言查找這種方式可以幫助我們查找特定語(yǔ)言的 repo。如: - 使用
language:LANGUAGE :如果我們想查找用 PHP 編寫(xiě)的存儲(chǔ)庫(kù),可以使用 language:PHP
按組織名稱(chēng)查找我們還可以搜索由特定組織維護(hù)或創(chuàng)建的存儲(chǔ)庫(kù)/項(xiàng)目。為此,我們需要使用關(guān)鍵字 org:... 開(kāi)始搜索,然后是組織名稱(chēng)。例如,我們使用 org:freecodecamp ,將列出組織名稱(chēng)匹配 freeCodeCamp 的 repo。 按日期查找如果我們想要基于特定日期的結(jié)果,可以使用以下關(guān)鍵字之一進(jìn)行搜索:created 、updated 、merged 和 closed 。這些關(guān)鍵字應(yīng)附有 YYYY-MM-DD 格式的日期。如 - 使用
keyword:YYYY-MM-DD :如果我們要搜索所有在 2022-10-01 之后創(chuàng)建的帶有單詞 freeCodeCamp 的存儲(chǔ)庫(kù),則可以使用 freecodecamp created:>2022-10-01
我們還可以使用 < 、> 、>= 和 <= 來(lái)搜索指定日期之后、之前和之后的日期。要在一個(gè)范圍內(nèi)搜索,可以使用 ... 。 按 License 查找在使用 repo 時(shí),了解 Licenses 也很重要。我們也可以按照 Licenses 來(lái)進(jìn)行查找。如: - 使用
license:LICENSE_KEYWORD :這是搜索具有特定 Licenses 項(xiàng)目的好方法。例如,要使用 MIT 許可證搜索項(xiàng)目,可以使用 license:MIT 。
按可見(jiàn)性查找我們還可以根據(jù)存儲(chǔ)庫(kù)的可見(jiàn)性進(jìn)行搜索。在這種情況下,我們可以使用公共或私有。這將分別匹配公共或私有存儲(chǔ)庫(kù)中的問(wèn)題和 PR。如: - 使用
is:public :這將顯示一個(gè)公共 repo 的列表。如我們要搜索 freeCodCamp 組織擁有的所有公共存儲(chǔ)庫(kù),可以使用:is:public org:freecodecamp 。 - 使用
is:private :這個(gè)查詢(xún)旨在列出給定搜索查詢(xún)下的所有私有存儲(chǔ)庫(kù)。
小結(jié)以上就是作者分享的各種 Github 搜索小技巧。我們可以通過(guò)組合這些條件來(lái)進(jìn)一步縮小范圍。我們還可以查看 Github 文檔[1] 和 高級(jí) Github 搜索[2] 來(lái)了解和體驗(yàn)更多搜索技巧。 
參考[1] https://docs.github.com/en/search-github/searching-on-github [2] https://github.com/search/advanced?
|