Github 实用技巧汇总
So, you really know Github?
高级搜索
高级搜索页面填目标关键字
这个比较简单,直接访问网址 : https://github.com/search/advanced
会看到有 Advanced options、Repositories options、Code options、Issues options、Users options以及Wiki options各类筛选条件可以选择,按照提示输入筛选条件就可以。
利用搜索关键字 filter 筛选
这个方式就是在普通搜索框指定筛选条件,相当于是上述高级搜索选项页面的命令行简化版本。
关键字与含义
通过 in
限定符,可以将搜索限制为仓库名称、仓库说明、仓库主题、readme内容的部分字符串,或者这些的任意组合。
以下只列举个人认为比较常用的搜索 仓库、 Issue 、用户 这三种情形,更详细内容请参考:GitHub官方关于Search中文文档.
-
搜索仓库
关键字 可选值 含义 in:name 字符串,纯英文 名称的部分字符串 in:description 字符串,可以有非英文 描述内容的部分字符串 in:readme 字符串,不限中英文 Readme.md内容的部分字符串 in:topic 字符串,纯英文. topic页面 所属主题的部分字符串,仓库类型 stars: 具体数字或范围(50..100 或 >500) stars数量 forks: 具体数字或范围(10..100 或 >=500) forks数量 followers: 具体数字或范围(10..100 或 >=500) 关注者数量 size: 具体数字或范围(10..100 或 >=500)单位:kB 所有文件内存总大小 created: YYYY-MM-DD 注意月-日都是2位数形式 可以用 > 或 < 符号表范围 仓库创建时间 pushed: YYYY-MM-DD 注意月-日都是2位数形式 可以用 > 或 < 符号表范围 最近一次push代码时间 language: C, C#, C++, Java,Go,Python,JavaScript, Swift, Rust,Kotlin…. 更多语言可参考GitHub高级搜索语言下拉框 项目编程语言 license: 请参考GitHub高级搜索License下拉框 项目遵循的证书协议 user: 一个明确的用户名,纯英文 仓库作者 org: 一个明确的组织,纯英文,比如google 仓库所属组织 - 形如
in:keyWord yourWords
之间有空格,冒号前后没有; - 形如
keyWord:数字或范围
,冒号前后没有空格;
- 形如
-
搜索 Issue
关键字 可选值 含义 type: issue 或 pr issue,表示只搜索issue; pr则表示 pull request in:title 字符串,纯英文 标题包含的字符串 in:comments 字符串,不限中英文 评论中包含的字符串 state: open 或 closed 开放/关闭的状态 comments: 具体数字或范围(10..100 或 >=500) 评论数量 reactions: 具体数字或范围(10..100 或 >=500) 反应的数量 interactions: 具体数字或范围(10..100 或 >=500) 反应和评论的数量 created: YYYY-MM-DD 注意月-日都是2位数形式 可以用 > 或 < 符号表范围 Issue开放时间 updated: YYYY-MM-DD 注意月-日都是2位数形式 可以用 > 或 < 符号表范围 Issue更新时间 -
搜索用户
关键字 可选值 含义 type: user 或 org 个人用户或组织 user:name 字符串,纯英文 精确用户名 org:name 字符串,纯英文 精确组织名 in:name 字符串,纯英文 真实姓名包包含内容 repos: 具体数字或范围(10..100 或 >=500) 仓库数量 location: 字符串,纯英文 用户所处地名,国家或城市 followers: 具体数字或范围(10..100 或 >=500) 关注者数量 created: YYYY-MM-DD 注意月-日都是2位数形式 可以用 > 或 < 符号表范围 Github账户注册时间
实例展示
下面举几个实用的例子:
-
指定 stars 不少于 2k 的且项目描述包含 “image” 的 C++ 项目:可以在普通搜索框输入
stars:>=2000 language:c++ in:description image
; -
指定仓库名包含 “log” 且 readme 中包含 “thread” 、stars数多于2k,以及最新更新时间大于 2022-01-01的活跃项目:可以在普通搜索框输入
in:name log in:readme thread pushed:>2022-01-01 stars:>2000
。很明显,我们打算找一个靠谱且活跃的考虑线程安全的 log 库,即使如此,还是搜到了525个仓库,可以按照需求继续缩小范围;
输入细节⚠️
-
冒号之后不要加空格,应该紧跟条件;(比如in:name之间不要加空格)
-
如果你的意向词条本身有空格,那就加上双引号;
比如上面的 log 库搜索我还希望它性能好(至少作者自己这么觉得),那就在readme里新增 “very fast”,多个词条用空格隔开就可以,可以发现结果已经只有40个仓库了
1
in:name log in:readme thread "very fast" stars:>2000 pushed:>2020-01-01
-
对于日期的格式,严格按照格式,上述日期就不能写成 “2020-1-1”,会导致搜索结果为空;
-
对于某些词条只知道一部分,就用
in:
,就可以让Github理解,这是一部分而不是精确指定这个关键字的值; -
多个相同的 in 可以合并;
以下2句等效,都是指搜索 仓库名或者 readme 中包含"thread"关键字的仓库(结果按照stars数排序):
in:name thread in:readme thread sort:stars
和in:name,readme thread sort:stars
-
-
指定 readme 中包含 “java” 和 “面试"关键字,且stars数和forks数都大于2000:可以搜索
in:readme 面试 java stars:>2000 forks:>2000 language:java
,可以发现找到了 21 个精品仓库,能让准备面试的朋友如获至宝; -
指定话题为 “algorithm” 且 stars 数大于 5000 、在2019年1月1日后建立的仓库:就可以执行
topic:algorithm stars:>2000 created:>2019-01-01
,目前是找到了14个仓库,都是精品算法刷题仓库。关于Github话题 Topic,可以点击 Github 主页的 Explore 看到 Topic 选项;或直接访问 https://github.com/topics 就可以看到热门Topic了。
-
如何找人呢?
-
如果已知大佬的用户名,例如 Linux 巨佬 Linus Torvalds,他Github用户名是 torvalds,可以直接搜索
user:torvalds
,就可以看到到唯一的用户以及其所有仓库列表。(大佬有162k 的 follower,啊🧎) -
如果用户名不清楚,可以用条件限定搜一搜大佬: 比如用
location:china followers:>2000 language:c++
就搜索到了Github上 Follower 数大于2000的国内C++开发者。目前看到是有 8 位,前三位就是腾讯图形学大佬Milo Yip 、 游戏与算法大佬liuyubo 和Taichi语言创始人胡渊鸣,靠谱!
-
awesome 一下
在 Github 这是个很神奇的词,有很多很牛的仓库都带有这个词,所以不论你想搜什么,有时不妨加这个词试一试。
比如想找一下很牛的 python 宝藏仓库,可以搜索 awesome python stars:>5000
,可以找到 20 多个 Python 宝藏仓库。
便捷在线浏览代码
Github-Dev
Github推出的在线编辑代码的一个项目,解决痛点 “ 每次看个新仓库都得先clone下来,因为网页在线点来点去跳转实在太慢了 ”。
具体使用方法是:在任意一个仓库页面,只需要 敲击一下半角句号 . 就可以跳转到web版 VSCode 打开该仓库(半角句号是指英文输入状态时的句号)。可以阅读,编辑,甚至可以提交代码,目前不足之处是跳转还不够快,而且有些插件受限制。
该功能是由这个开源项目 github/dev 支撑的。
Github1s
和上述的 Github-Dev是类似的,也是在线打开 VSCode 查看代码,由项目 conwnet/github1s。
操作方法:修改任意一个 github 仓库的地址栏,在 github.com 中加 “1s”,变成 “github1s.com” ,然后 Enter ,就会打开一个 Web 版的 VSCode,还有个缺点是代码是 Readonly 不可编辑。
此方法作为 Github-Dev 的备用。
Github加速clone或访问
Dev-SideCar 和 Github 镜像站不冲突,可以单独使用,也可以都使用,不冲突。
Dev-SideCar
开发者边车工具,可以用来加速 git-clone 以及 npm,具体使用方法不赘述。可以参考:Github:Dev-Side-Car 或 Gitee:Dev-SideCar。
Github镜像站
举个例子,对于仓库 https://github.com/gabime/spdlog.git 来说,可能大部分直接就是执行 git clone了,可能发现下载速度非常慢。
以下方法都是在不修改 hosts 的情况下,尽量解决没有梯子带来的Github Clone或访问慢的问题。可以任选一个使用。
-
fastgit
网址全名是:https://hub.fastgit.xyz/ ,官方文档参考 fastgit.org中文文档
该网站以前是 fastgit.org,后来就因为某些众所周知的原因无法使用了,改成了 fastgit.xyz。
-
用法1:网址替换,替换网址中 github.com 这部分,上述仓库网址换成
https://hub.fastgit.xyz/gabime/spdlog.git
如果想每次 clone 仍然执行原网址,不手动改地址,还可以把这个设置全局应用,只需要终端执行:
1 2
git config --global url."https://hub.fastgit.xyz/".insteadOf "https://github.com/" git config protocol.https.allow always
-
用法2:有辅助工具 fgit,不做赘述,直接看 fgit 文档
-
-
gitclone.com
网址全名是: https://gitclone.com/
这个替换域名的方式为加 gitclone.com 的前缀:
1
https://gitclone.com/github.com/gabime/spdlog.git
如果想每次 clone 仍然执行原网址,不手动改地址,可以同样做全局设置,只需要终端执行:
1
git config --global url."https://gitclone.com/".insteadOf "https://"