首页 > 其他分享 >关于 GitHub 的奇技淫巧

关于 GitHub 的奇技淫巧

时间:2024-09-26 10:45:28浏览次数:10  
标签:GitHub 项目 仓库 查询 开源 文档 关于 奇技淫巧

介绍下多年来使用 GitHub 所了解到的技巧

学会看文档

如何学习使用 GitHub 呢?最好的方式就是:阅读官网文档。

官方文档通常比任何教程都 全面、权威、准确。网上教程和文章满天飞,但都是建立在官方文档的基础上,一旦官方文档修改了,很难做到实时同步,就可能会让学习者感到困惑。

对于有经验的程序员来说,通常都会选择阅读官方文档来学习技术。

此外,GitHub 文档还有中文版,翻译地挺到位的,非常推荐阅读。

官网文档地址:https://docs.github.com/zh

英文版的地址:https://docs.github.com/en

对于已经掌握 GitHub 基本用法的朋友,也可以利用该文档查漏补缺,了解更多提升 GitHub 使用效率和工作效率的强大功能。

如何找到优质项目

除了多敲代码写项目,阅读优秀项目的源码,也可以提高我们的编程能力。那么,就有几个问题需要解决:

  • 去哪找
  • 什么是好
  • 怎么找

去哪找

目前业内有很多仓库托管服务平台,例如 GitHubGiteeSourceForgeOSChina...

但最好的一定是 GitHub。在这里,你可以找到各种各样的开源项目,大到世界知名框架、小到个人练习片段,还能和他人一起协作完成项目。

Gitee 其实就是国内版的 GitHub,但项目数远不及 GitHub。

而 OSChina (开源中国)和 Gitee 有非常紧密的合作,将一些开源项目进行了整理分类。

什么是好项目

首先,没有最好的项目,只有最合适的。但我们可以通过一些指标和信息来进行基本的评判。

打开一个项目的页面,一个好项目通常有如下特点:

  1. 更多的 star(收藏),对项目实用性的肯定
  2. 更多的 Fork(派生搬运),表示想要学习项目或做贡献
  3. 更多的 watch,表示对项目的关注度高
  4. 积极的 issues(问题),表示更多人使用项目并希望改进
  5. 积极的 Pull requests(代码合并请求),表示更多人愿意合作贡献代码
  6. 频繁更新最近提交时间,表示项目仍在维护
  7. 可直接访问的官网,更正式
  8. 类别标签明确,帮助开发者对项目进行定位

ant-design 为例:

然后我们接着往下看,一个好项目的 README.md(项目描述)通常会很完善,例如有图标、徽章、多种语言的文档、介绍、用法......

怎么找

GitHub 搜索

最简单粗暴的方法:想学什么就搜什么,然后根据一些简单的排序规则(例如根据 star )来筛选。

例如学后端,就搜索 backend:

但这样太简单了,我们可以加上过滤条件,只需在搜索时加上一些参数即可:

  • in:name <关键字>​:指定查询仓库名称中包含“关键字”的仓库
  • in:description <关键字>​ :指定查询仓库描述中包含“关键字”的仓库
  • in:readme <关键字>​:指定查询 readme 中包含“关键字”的仓库
  • stars(fork): >(=) <数字> <关键字>​:查询 star 或 fork 数大于或等于指定数字的仓库,并且指定关键字
  • stars(fork): 10..20 <关键词>​:查询 star 或 fork 数在 10 到 20 之间的仓库,并且指定关键字
  • size:>=5000 <关键词>​: 查询 star 大于等于 5000K 的仓库,并且指定关键字
  • pushed(created):>2019-11-15 <关键字>​:更新(或创建)日期在 2019 年 11 月 16 日之后的仓库,并且带关键字
  • license:apache-2.0 <关键字>​:查询 LICENSE 为 apache-2.0 的仓库,并指定关键字
  • language:java <关键词>​:查询仓库语言为 Java 的仓库,并且指定关键字
  • user:<用户名>​:查询某个用户的项目
  • org:<组织名>​:查询某个组织的项目

示例:

# 示例 1:查询仓库名包含 javascript,并且 stars 数大于 1000 的项目
in:name javascript stars:>1000

# 示例 2:查询描述中包含"小程序"、 fork 大于 100、最近更新时间在 2019-11-15、并且开发语言为 vue 的项目
in:description 小程序 fork:>100 pushed:>2019-11-15 language:vue

这么多过滤条件完全不用记,我们可以直接可以用高级搜索页,自动生成搜索表达式:https://github.com/search/advanced

更多技巧,请参考官网文档:About searching on GitHub - GitHub Docs

Explore GitHub

GitHub 官方探索,基于兴趣为你推荐开源项目,精准度很高!

Topics on GitHub

GitHub 官方提供的项目主题分类,帮助你找到合适的项目。

GitHub官方提供的项目趋势统计,能够看到一段时间内项目和开发者新增 star 数的排行,还支持选择语言、编程语言及时间范围,帮你发现优秀、有潜力的开源项目。

Awesome

Awesome 项目是指由社区同学共同贡献而成的项目,包含了某一技术的完整生态(如优秀开源项目、类库、工具、知识点)。比如 awesome-javaawesome-vue

hellogithub.com

一个分享 GitHub 上有趣、入门级的开源项目的网站。

如果想看这个网站背后的故事,可以参考作者的自白:我和 HelloGitHub

searchcode.com

简单全面的开源代码搜索器,一键在 40 万个项目、750 亿行代码中高效搜索,还提供 API 接口

LibHunt.com

汇集了 GitHub 上实用的开源项目和软件类库,让编程人员快速发现好的项目。支持近 20 种不同编程语言的项目,以及各种热门标签,可以快速搜索,还能查看项目热度。

codelf

官网:https://unbug.github.io/codelf

变量命名神器,当我们写项目的时候,总会对变量名、类名、方法名有一个规范,那么就可以通过该网站来搜索其他开源平台的项目源码,帮我们匹配出合适的变量名,支持中文。

输入关键词后,可以选择和关键词相关的标签,一键跳转至项目代码。

PS:底层基于 searchcode

在线阅读代码

找到项目后,接下来就是阅读了,为了方便开发者,GitHub 推出了在线阅读功能。

操作很简单,打开 GitHub 项目页,然后按下 "."或者 "。"键。

例如著名的 Linux 项目源码,打开项目页是这样的:

按下 "."或者 "。"键后,就会跳转到 https://github.dev/torvalds/linux,这是打开了一个在线的 VSCode,并且该 VSCode 里已经导入了 Linux 的源码:

这样就不用下载到本地再打开了,非常方便。

在线看文档

有些项目的文档不是 Markdown 格式,而是 HTML 格式的(例如 Java Doc),那么此时在 GitHub 上看起来就直接是源代码,而不是渲染后的结果:

我们可以用一个神奇的网站:https://htmlpreview.github.io,在这里输入你想看的 GitHub 上的 HTML 文件,就能看到渲染后的结果了:

在线运行代码

光阅读源码、文档效果有限,更推荐自己修改、调试和运行下项目,才能更加深入理解该项目。

而有个网站能做到这点:https://www.gitpod.io,这是一个可以在线提供 dev 环境并运行代码的地方。

使用起来很简单,(可以直接通过 GitHub)登录,然后输入项目链接,例如我输入我的博客项目(前端项目),并选择用 VSCode(也可以选 IDEA):

然后就可以安装依赖并运行了,具体步骤就不演示了。

小结

善用 GitHub:

  • 学会看文档
  • 学会找优秀项目

三个有助于看源码的好工具:

参考

【硬核干货】如何高效找到优质编程项目?

我和 HelloGitHub

SourceForge:世界上最大开源平台,被残酷地抛弃了!

Github 里面居然藏着个 IDE?在线看开源代码也太方便了!

标签:GitHub,项目,仓库,查询,开源,文档,关于,奇技淫巧
From: https://www.cnblogs.com/PeterJXL/p/18432988

相关文章

  • Visual Studio Code,关于创建项目时,系统找不到指定路径
            vitecreatehello-vite项目时,系统总是找不到指定的路径         然后在搜索框搜PowerShell,并以管理员身份运行,更改了执行策略为(A)全是          但是在接着重新在终端里的时候,vitecreatehello-vite项目时,系统还是找不到指定路径。发......
  • 【Azure Event Hub】关于Event Hub指标 ConsumerLag 的解释
    问题描述在使用AzureEventHub的过程中,需要监控消费端是否正常消费数据?而常规的指标只有IncomingMessage,OutgoingMessage,是否指标能表明当前EventHub消费滞后,即Incoming数量远远大于Outgoing呢?IncomingMessages :发布到事件中心的消息数。OutgoingMessages :从事件中心使......
  • 【Azure Event Hub】关于Event Hub指标 ConsumerLag 的解释
    问题描述在使用AzureEventHub的过程中,需要监控消费端是否正常消费数据?而常规的指标只有IncomingMessage,OutgoingMessage,是否指标能表明当前EventHub消费滞后,即Incoming数量远远大于Outgoing呢?IncomingMessages:发布到事件中心的消息数。OutgoingMessages:从事件中心......
  • 关于HarmonyOS的学习
    day35一、回调地狱  //比如我们发送三个ajax请求  //-第一个正常发送  //-第二个请求需要第一个请求的结果中的某一个值作为参数  //-第三个请求需要第二个请求的结果中的某一个值作为参数  ajax_get({    url:'http://localhost......
  • 关于HarmonyOS的学习
    day36一、可选链和空集合并符1.?  //?作用:1、三目运算符2、可选链  constobj={    id:1,    //info:{    //  name:'张',    //  age:18    //} }  console.log(obj.id)  cons......
  • 关于 .NET Core WebAPI 中构建一个百万级高性能、低延迟的大型聊天系统
    在.NETCoreWebAPI中构建一个百万级高性能、低延迟的大型聊天系统,需要结合多种技术和架构设计。以下是实现此类系统所需的关键技术、架构和优化策略:1.高效的通信协议和技术SignalR:如果你想要在.NETCore中实现一个基于WebSocket的实时通信系统,SignalR是一个非常好的......
  • 关于 ReentrantLock 中锁 lock() 和解锁 unlock() 的底层原理浅析
    关于ReentrantLock中锁lock()和解锁unlock()的底层原理浅析一、描述如下代码,当我们在使用ReentrantLock进行加锁和解锁时,底层到底是如何帮助我们进行控制的啦?staticLocklock=newReentrantLock();publicstaticvoidmain(String[]args){/......
  • 关于动态库加载问题
    1,GetProcAddress只能加载与函数名一致的符号,如果是C++符号是无法加载函数的所以在进行动态库加载时候,如果被加载的库是C++组件,需要将接口声明添加extern“C”或者增加def文件;否则会出现GetProcAddress加载动态函数时候失败;2,查看动态库是否有符号可以使用depend工具:http://w......
  • 关于RESTfull
    目录关于RESTful资源资源表现总结关于RESTfulREST的全称是RepresentationalStateTransfer中文含义表现层状态转化。符合REST规范的设计,我们称为RESTful设计。它的设计哲学主要是将服务器提供的内容实体看作一个资源,并表现在URL上。资源如下地址,这个地址代表了一个资源......
  • 关于2024年11月30日PMI认证考试的报名通知
    尊敬的各位考生:经PMI和中国国际人才交流基金会研究决定,中国大陆地区2024年第四期PMI认证考试定于11月30日举办。在基金会网站报名参加本次PMI认证考试的考生须认真阅读下文,知悉考试安排及注意事项,并遵守考试有关规定。一、报名注意事项1.在报名前请考生做好网站用户注册、信息绑定......