赞
踩
很多的小伙伴,经常会有这样的困惑,我看了很多技术的学习文档、书籍、甚至视频,我想动手实践,于是我打开了GitHub,想找个开源项目,进行学习,获取项目实战经验。这个时候很多小伙伴就会面临这样的问题:“我不会搜啊,我该怎么找呀?”,最终只能放弃。
这篇文章教你精准地在GitHub搜索项目。
在讲清楚之前呢,我们先来了解一下一个开源项目有哪些组成部分:
name: 项目名
description: 项目的简要描述
项目的源码
README.md: 项目的详细情况的介绍
那么除了这些要素之外,项目本身的star数和fork数,也是评判一个开源项目是否火热的标准,这同时也是一个很重要的搜索标准。另外我们也要注意观察这个项目的最近更新日期,因为项目越活跃,那么它的更新日期也更加频繁。
以上要素就是我们在进行搜索的时候要注意的一些关键点。
那我们到底如何搜索呢?
假设我们现在要搜索React,相信大部分小伙伴都是直接在搜索框里输入:“React”,然后一回车,你就会发现情况像下面这样:
搜索结果会显示非常多的开源项目,简直让你应接不暇,无从下手,很多小伙伴搜到这一步就放弃了,因为项目太多了,根本找不到如何找到自己感兴趣的开源项目,所以这样搜索非常的不准确。所以我们来学习一下稍微精确一点的搜索方法。
搜索项目名里面包含React的项目:
in:name React
得到如下结果:
可以看到,这些搜索结果都是项目名里面带有“React”关键字的项目,但是项目数量依旧很多。
现在我们来约束一下
比如我再精确到项目的star数大于5000+:
in:name React stars:>5000
结果是这样的:
搜索结果瞬间精确了很多,现在只有114个项目可供选择。当然我们一般不会把star数设置得这么高,一般设置个1000就差不多了。
同理,我们也可以按照fork的数量来进行搜索:
in:name React stars:>5000 forks:>3000
你会发现,结果越来越精确!
搜索README.md里面包含React的项目:
in:readme React
结果有这么多,那么我们再限制一下它的star数和fork数:
in:readme React stars:>3000 forks:>3000
搜索结果一下子精确到了90个。这个时候你再去选择项目,就会变得容易很多。
假设我们现在要学习微服务的项目,我们搜索项目描述(description)里面包含微服务的项目:
in:description 微服务
结果有这么多,那我们接着增加一些筛选条件:
in:description 微服务 language:python
language:python的意思是我们把语言限制为python,我们来看看结果如何:
搜索结果精确了很多。
假如在这些项目里面,我们想要找到最近才更新的项目,意思是更新时间就在最近,我们可以这样:
in:description 微服务 language:python pushed:>2020-01-01
pushed:>2020-01-01的意思是我们把项目的最后更新时间限制到2020-01-01,我们来看看结果如何:
搜索结果只有8个了,这几个项目就属于更新比较活跃的项目,这下再也不纠结了。
可以使用文件查找器在仓库中搜索文件。 若要在 GitHub 上搜索多个存储库中的文件,请使用 path 代码搜索限定符。
提示:
默认情况下,文件查找器结果将排除某些目录,例如 build、log、tmp 和 vendor。 若要搜索这些目录中的文件,请使用 path 代码搜索限定符。或者,可以使用 .gitattributes 文件自定义默认排除的目录。
按键盘上的 t 键也可以打开文件查找器。 有关详细信息,请参阅“键盘快捷方式”。
使用文件查找器
自定义排除的文件
默认情况下,如果文件查找器结果存在于存储库根路径中,则结果不会包含以下目录中的文件:
- .git
- .hg
- .sass-cache
- .svn
- build
- dot_git
- log
- tmp
- vendor
可以使用 .gitattributes 文件替代这些默认排除项。
为此,请在存储库根路径中创建或更新名为 .gitattributes 的文件,将应包含在文件查找器结果中的每个目录的 linguist-generated 属性设置为 false。
例如,以下 .gitattributes 文件会导致 build/ 目录中的文件可供文件查找器使用:
build/** linguist-generated=false
请注意,此替代需要使用递归 glob 模式 (**)。 有关详细信息,请参阅 Git 文档中的“模式格式”。 不支持对默认排除目录中的子目录进行更复杂的替代。
可以在 GitHub 上搜索仓库,并使用这些仓库搜索限定符的任意组合缩小结果范围。
可以在所有 GitHub.com 内全局搜索存储库,也可以在特定组织内搜索存储库。 有关详细信息,请参阅“关于在 GitHub 上搜索”。
若要在搜索结果中包含分支,需要在查询中添加 fork:true 或 fork:only。 有关详细信息,请参阅“在复刻中搜索”。
提示:
有关可以添加到任何搜索限定符以进一步改善结果的搜索语法列表,请参阅“了解搜索语法”。
对多个字词的搜索词使用引号。 例如,如果要搜索具有标签“In progress”的问题,可搜索 label:"in progress"。 搜索不区分大小写。
按仓库名称、说明或自述文件内容搜索
通过 in 限定符,可将搜索范围限制到存储库名称、存储库说明、存储库主题、自述文件内容或这些项的任意组合。 如果省略此限定符,则仅搜索存储库名称、说明和主题。
限定符 示例
in:name jquery in:name 匹配名称中带有“jquery”的存储库。
in:description jquery in:name,description 匹配名称或说明中带有“jquery”的存储库。
in:topics jquery in:topics 将带“jquery”标签的存储库匹配为主题。
in:readme jquery in:readme 匹配自述文件中提及“jquery”的存储库。
repo:owner/name repo:octocat/hello-world 匹配特定的存储库名称。
基于仓库的内容搜索
可以使用 in:readme 限定符,通过搜索存储库自述文件中的内容来查找存储库。 有关详细信息,请参阅“关于自述文件”。
除了使用 in:readme,还可以通过搜索存储库中的特定内容来查找存储库。 要搜索仓库内的特定文件或内容,您可以使用查找器或代码特定的搜索限定符。 有关详细信息,请参阅“在 GitHub 上查找文件”和“了解 GitHub 代码搜索语法”。
限定符 示例
in:readme octocat in:readme 匹配自述文件中提及“octocat”的存储库。
在用户或组织的仓库内搜索
若要在特定用户或组织拥有的所有存储库中搜索,可使用 user 或 org 限定符。
限定符 示例
user:USERNAME user:defunkt forks:>100 匹配来自 @defunkt 且具有超过 100 个分支的存储库。
org:ORGNAME org:github 匹配来自 GitHub 的存储库。
按仓库大小搜索
size 限定符使用大于、小于和范围限定符查找与特定大小(以千字节为单位)匹配的存储库。 有关详细信息,请参阅“了解搜索语法”。
限定符 示例
size:n size:1000 匹配正好为 1 MB 的存储库。
size:>n size:>=30000 匹配至少为 30 MB 的存储库。
size:<n size:<50 匹配小于 50 KB 的存储库。
size:n..n size:50..120 匹配介于 50 KB 至 120 KB 之间的存储库。
按关注者数量搜索
可以使用 followers 限定符以及大于、小于和范围限定符,根据关注存储库的用户数量筛选存储库。 有关详细信息,请参阅“了解搜索语法”。
限定符 示例
followers:>=n node followers:>=10000 匹配有 10,000 名或更多关注者提及“node”一词的存储库。
followers:n..n styleguide linter followers:1..10 匹配有 1 至 10 名关注者提及“styleguide linter”一词的存储库。
按复刻数量搜索
forks 限定符使用大于、小于和范围限定符指定存储库应具有的分支数量。 有关详细信息,请参阅“了解搜索语法”。
限定符 示例
forks:n forks:5 匹配只有五个分支的存储库。
forks:>n forks:>=205 匹配至少有 205 个分支的存储库。
forks:<n forks:<90 匹配具有少于 90 个分支的存储库。
forks:n..n forks:10..20 匹配具有 10 到 20 个分支的存储库。
按星号数量搜索
您可以使用大于、小于和范围限定符,基于仓库的星标数量来搜索仓库。 有关详细信息,请参阅“使用星标保存仓库”和“了解搜索语法”。
限定符 示例
stars:n stars:500 匹配正好有 500 个星标的存储库。
stars:n..n size:<n stars:10..20 size:<1000 匹配有 10 到 20 个星标、小于 1000 KB 的存储库。
stars:>=n fork:true language:LANGUAGE stars:>=500 fork:true language:php 匹配至少有 500 个星标(包括用 PHP 编写的分支星标)的存储库。
按仓库创建或上次更新时间搜索
您可以基于创建时间或上次更新时间过滤仓库。 对于存储库创建,可以使用 created 限定符;要了解存储库的最后更新时间,需要使用 pushed 限定符。 pushed 限定符将返回存储库列表,按存储库中任意分支上最近进行的提交排序。
两者均采用日期作为参数。 日期格式必须遵循 ISO8601 标准,即 YYYY-MM-DD(年-月-日)。 也可以在日期后添加可选的时间信息 THH:MM:SS+00:00,以按小时、分钟和秒进行搜索。 即 T,随后是 HH:MM:SS(时-分-秒)和 UTC 时差 (+00:00)。
搜索日期时,可以使用大于、小于和范围限定符来进一步筛选结果。 有关详细信息,请参阅“了解搜索语法”。
限定符 示例
created:<YYYY-MM-DD webos created:<2011-01-01 匹配具有 2011 年之前创建的“webos”一词的存储库。
pushed:>YYYY-MM-DD css pushed:>2013-02-01 匹配具有在 2013 年 1 月之后推送到其中的“css”一词的存储库。
pushed:>=YYYY-MM-DD fork:only case pushed:>=2013-03-06 fork:only 匹配在 2013 年 3 月 6 日或之后将“case”一词推送到其中的存储库(即分支)。
按语言搜索
您可以根据仓库中代码的语言搜索仓库。
限定符 示例
language:LANGUAGE rails language:javascript 匹配具有以 JavaScript 编写的“rails”一词的存储库。
按主题搜索
您可以找到按特定主题分类的所有仓库。 有关详细信息,请参阅“使用主题对仓库分类”。
限定符 示例
topic:TOPIC topic:jekyll 匹配按“Jekyll”主题分类的存储库。
按主题数量搜索
可以使用 topics 限定符以及大于、小于和范围限定符,根据应用于存储库的主题数量来搜索存储库。 有关详细信息,请参阅“使用主题对仓库分类”和“了解搜索语法”。
限定符 示例
topics:n topics:5 匹配具有五个主题的存储库。
topics:>n topics:>3 匹配具有三个以上主题的存储库。
按许可搜索
您可以根据仓库中许可的类型搜索仓库。 您必须使用许可关键字,按特定许可或许可系列来过滤仓库。 有关详细信息,请参阅“许可仓库”。
限定符 示例
license:LICENSE_KEYWORD license:apache-2.0 匹配根据 Apache 许可证 2.0 许可的存储库。
按仓库可见性搜索
您可以根据仓库的可见性过滤搜索。 有关详细信息,请参阅“关于仓库”。
| 限定符 | 示例 | ------------- | ------------- | | is:public | is:public org:github 匹配由 GitHub 所有的公共存储库。 | is:private | is:private pages 匹配你可以访问且包含“pages”一词的专用存储库。
基于仓库是否为镜像搜索
您可以根据仓库是否为镜像以及托管于其他位置托管来搜索仓库。 有关详细信息,请参阅“寻找在 GitHub 上参与开源项目的方法”。
限定符 示例
mirror:true mirror:true GNOME 匹配为镜像且包含“GNOME”一词的存储库。
mirror:false mirror:false GNOME 匹配不为镜像且包含“GNOME”一词的存储库。
根据存储库是否为模板搜索
你可以根据存储库是否是模板来搜索存储库。 有关详细信息,请参阅“创建模板仓库”。
限定符 示例
template:true template:true GNOME 匹配是模板且包含“GNOME”一词的存储库。
template:false template:false GNOME 匹配不是模板且包含“GNOME”一词的存储库。
基于仓库是否已存档搜索
您可以基于仓库是否已存档来搜索仓库。 有关详细信息,请参阅“存档仓库”。
限定符 示例
archived:true archived:true GNOME 匹配已存档且包含“GNOME”一词的存储库。
archived:false 匹配未存档且包含“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”一词的存储库。
基于赞助能力的搜索
可以使用 is:sponsorable 限定符搜索其所有者可以在 GitHub Sponsors 上获得赞助的存储库。 有关详细信息,请参阅“关于 GitHub 赞助商”。
可以使用 has:funding-file 限定符搜索具有融资文件的存储库。 有关详细信息,请参阅“在仓库中显示赞助者按钮”。
限定符 示例
is:sponsorable is:sponsorable 匹配其所有者拥有 GitHub Sponsors 配置文件的存储库。
has:funding-file has:funding-file 匹配具有 FUNDING.yml 文件的存储库。
好,我们来总结一下。我们想要进行精准搜索,无非就是增加筛选条件。
in:name xxx // 按照项目名搜索
in:readme xxx // 按照README搜索
in:description xxx // 按照description搜索
那么在这里面呢,我们又可以增加筛选条件
stars:>xxx // stars数大于xxx
forks:>3000 // forks数大于xxx
language:xxx // 编程语言是xxx
pushed:>YYYY-MM-DD // 最后更新时间大于YYYY-MM-DD
原文链接:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。