用途
gh-search-commits 用于在 GitHub 上跨仓库搜索提交(commit)。它基于 GitHub CLI 的 gh search commits 命令,帮助用户按作者、提交者、日期、哈希等条件定位提交记录,并支持在特定仓库、组织或可见性范围内搜索提交信息中的关键词。
主要能力
- 按作者过滤:
--author、--author-name、--author-email、--author-date - 按提交者过滤:
--committer、--committer-name、--committer-email、--committer-date - 按提交属性过滤:
--hash、--parent、--tree、--merge - 按仓库范围过滤:
--owner、-R/--repo、--visibility - 输出与排序:
-L/--limit(默认 30)、--sort(author-date 或 committer-date)、--order(asc 或 desc)、--json、-w/--web - JSON 输出字段:author、commit、committer、id、parents、repository、sha、url
使用方式
基本语法:
gh search commits [<query>] [flags]
正向过滤可使用标志语法,例如:
gh search commits "bug fix" --author octocat --repo cli/cli
涉及排除(否定)或复杂布尔逻辑时,必须使用查询语法并加上 -- 分隔符,例如:
gh search commits -- "deploy -author:dependabot -author:renovate"
关键规则:
- 排除结果必须使用
--分隔符,采用-qualifier:value格式,并整体加引号。 - 不要在同一条命令中混用标志语法与查询语法。
- 日期使用 ISO8601 格式(YYYY-MM-DD)并配合比较运算符:
>、>=、<、<=、..(范围)。日期比较需要加引号。 - PowerShell 下排除查询需使用
--%防止解析,例如:gh --% search commits -- "fix -author:dependabot"。
常见示例:
- 按作者查找:
gh search commits --author octocat --repo cli/cli - 搜索提交信息:
gh search commits "security fix" --repo myorg/myrepo - 日期范围:
gh search commits "refactor" --author-date "2024-01-01..2024-12-31" - 查找合并提交:
gh search commits --merge --repo owner/repo - 排除机器人提交:
gh search commits -- "deployment -author:dependabot" - 按哈希搜索:
gh search commits --hash 8dd03144 - 按邮箱查找:
gh search commits --author-email user@example.com
适用场景
- 跨仓库或组织查找某作者或提交者的提交
- 按关键词搜索提交信息
- 在特定仓库中按日期或哈希筛选提交
- 查找组织内的合并提交
- 排除机器人、特定作者或特定日期范围的提交
限制与注意事项
- 标志语法不支持否定,排除必须改用查询语法。
NOT关键字无效,应使用-前缀。--author不接受@前缀。- 日期比较不加引号可能被 shell 解释。
- 使用前需安装 GitHub CLI;若未认证需执行
gh auth login。 - 安装地址:https://cli.github.com/manual/installation
- 相关 GitHub 搜索语法文档:https://docs.github.com/search-github/searching-on-github/searching-commits