如果你是一名前端开发人员并且使用过 Git,你可能知道 Git 提供的一些非常有用的命令行工具,如 git log、git grep 等。但是,这些工具有时限制比较大,例如 git log 只能过滤某个作者或某段时间提交的信息,而无法按多种条件进行筛选。这时,git-query 就是我们需要的工具了。
git-query 简介
git-query 是一个基于 Git 的命令行工具,它可以通过类 SQL 的语法从 Git 日志中筛选出我们需要的内容。它包含了许多有用的筛选方式,如:按照作者、时间、提交信息、变更行数等进行筛选。因为使用类 SQL 的语法,所以比较容易上手,只需要知道一些简单语法和参数即可开始使用。git-query 还提供了详尽的帮助文档,如果你遇到问题,可以随时查阅。
安装
npm install -g git-query
使用方法
基本用法
比如,我们想要查找某个仓库中,所有由你提交的、在 2021 年 9 月之前的提交,并且提交信息包含“feature”的提交记录。
首先,在命令行输入: git query "SELECT * FROM log WHERE author='你的名字' AND date<'2021-10-01' AND message LIKE '%feature%';"
参数
git-query 包含如下参数:
--repo / -r
指定需要查询的 Git 仓库,默认为当前目录。
--limit / -l
指定查询的结果数量,默认为 10。
--no-pager / -n
禁用 git log 的默认分页器,防止部分输出被截断。
--pretty / -p
指定输出格式,支持如下参数:
- “oneline”:输出每个提交的简洁信息,例如“091d0f7 commit message”。
- “short”:输出每个提交的较详细信息,例如提交作者、提交时间、提交信息等。
- “medium”:输出每个提交的较详细信息,并在信息下方附上变更内容的摘要信息。
- “full”:输出每个提交的较详细信息,并在信息下方附上变更内容的完整信息。
- “fuller”:输出每个提交的较详细信息,包括变更内容的完整信息以及作者、日期。
--json / -j
默认情况下,git-query 使用类 SQL 的语法输出结果。如果你需要以 JSON 格式输出,可以添加该参数。
语法说明
下面是 git-query 的基本语法:
git query "SELECT columns FROM log WHERE conditions;"
列名
git-query 支持如下列名:
- “message”:提交信息。
- “author”:作者。
- “email”:作者的邮箱。
- “date”:提交日期,格式为 YYYY-MM-DD。
- “datetime”:提交时间,格式为 YYYY-MM-DDTHH:mm:ss。
条件
git-query 支持下列条件:
- “=”:等于。
- “!=”:不等于。
- “<”:小于。
- “>”:大于。
- “<=”:小于等于。
- “>=”:大于等于。
- “LIKE”:匹配字符串(支持通配符“%”和“_”)。
- “IN”:匹配列表中的值。
逻辑运算符
git-query 支持逻辑运算符:
- “AND”:逻辑与。
- “OR”:逻辑或。
- “NOT”:逻辑非。
字符串
如果你需要在条件中使用字符串,需要使用单引号或双引号括起来,例如:
git query "SELECT * FROM log WHERE author='John Smith';"
数字
如果你需要在条件中使用数字,不需要使用引号括起来:
git query "SELECT * FROM log WHERE date>2017-01-01;"
日期
如果你需要在条件中使用日期,需要使用以下格式:
YYYY-MM-DD
例如:
git query "SELECT * FROM log WHERE date<2017-06-33;"
列名
在查询语句中可以使用列名,例如:
git query "SELECT author,message FROM log WHERE author='John Smith' AND date<2017-01-01;"
操作符
git-query 支持各种操作符,例如:
>、<、=、!=
git query "SELECT * FROM log WHERE date>=2017-01-01 AND message!='Initial commit';"
LIKE
git query "SELECT * FROM log WHERE message LIKE '%feature%';"
IN
git query "SELECT * FROM log WHERE author IN ('John Smith','Jane Smith');"
限制显示数量
你可以使用 LIMIT 参数限制显示的数量,例如:
git query "SELECT * FROM log WHERE author='John Smith' LIMIT 10;"
排序
你可以使用 ORDER BY 参数对筛选结果进行排序,例如:
git query "SELECT * FROM log ORDER BY date DESC LIMIT 10;"
帮助文档
在命令行中输入以下命令可以查看 git-query 的帮助文档:
git query —help
示例代码
下面是一个示例代码,该代码从 Git 日志中查询所有提交者不是“John Smith”或“Jane Smith”的提交记录:
git query "SELECT * FROM log WHERE author NOT IN ('John Smith', 'Jane Smith');"
结论
使用 git-query 可以非常方便地从 Git 日志中筛选出我们想要的内容,大大提高了开发效率。相信这篇教程可以帮助你快速上手 git-query,并从中受益。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600557bf81e8991b448d4c95