您可以在整个 GitHub(所有仓库)中全局搜索问题和拉取请求,或在特定组织内部搜索。更多信息请参阅 GitHub 搜索概述。
提示
- 本文展示了在 GitHub.com 上的示例搜索,您同样可以在其他 GitHub 平台上使用相同的搜索过滤器。
- 您可以在仓库的 Issues 页面和 Issues 仪表盘上使用布尔和嵌套查询构建高级过滤器。参见 过滤和搜索问题及拉取请求。
- 若想查看可添加到任意搜索限定符以进一步优化结果的搜索语法列表,请参阅 了解搜索语法。
- 对多词搜索词使用引号。例如,要搜索标记为 “In progress” 的 issue,您应搜索
label:"in progress"。搜索不区分大小写。 - 使用减号(连字符)可以排除匹配特定限定符的结果。例如,要忽略由 “octocat” 用户创建的问题,可在搜索中使用
-author:octocat。请注意,此方法对 缺失元数据限定符无效。 - 您可以使用键盘快捷键将光标定位到议题或拉取请求列表上方的搜索栏。更多信息,请参阅 键盘快捷键。
仅搜索问题或拉取请求
默认情况下,GitHub 搜索会返回问题和拉取请求两类结果。不过,您可以使用 type 或 is 限定符将结果限制为仅问题或仅拉取请求。
| 限定符 | 示例 |
|---|---|
type:pr | cat type:pr 匹配标题中含 “cat” 的拉取请求。 |
type:issue | github commenter:defunkt type:issue 匹配包含 “github” 且有 @defunkt 留言的 issue。 |
is:pr | event is:pr 匹配标题中含 “event” 的拉取请求。 |
is:issue | is:issue label:bug is:closed 匹配标签为 “bug” 且已关闭的 issue。 |
按标题、正文或评论搜索
使用 in 限定符,您可以将搜索范围限制在标题、正文、评论或它们的任意组合。若省略该限定符,系统默认在标题、正文和评论中全部搜索。
| 限定符 | 示例 |
|---|---|
in:title | warning in:title 匹配标题中包含 “warning” 的 issue。 |
in:body | error in:title,body 匹配标题或正文中包含 “error” 的 issue。 |
in:comments | shipit in:comments 匹配评论中提到 “shipit” 的 issue。 |
在用户或组织的仓库内搜索
要在特定用户或组织拥有的所有仓库中搜索问题和拉取请求,可使用 user 或 org 限定符。若要在单个仓库中搜索,可使用 repo 限定符。
如果您能够访问超过 10,000 个仓库的拉取请求,则需要将搜索限定在某个组织、个人账户或具体仓库,以看到结果。
| 限定符 | 示例 |
|---|---|
user:USERNAME | user:defunkt ubuntu 匹配 @defunkt 拥有的仓库中包含 “ubuntu” 的 issue。 |
org:ORGNAME | org:github 匹配 GitHub 组织拥有的仓库中的 issue。 |
repo:USERNAME/REPOSITORY | repo:mozilla/shumway created:<2012-03-01 匹配 @mozilla 的 shumway 项目中 2012 年 3 月前创建的 issue。 |
按打开或关闭状态搜索
您可以使用 state 或 is 限定符,根据 issue 或拉取请求的打开/关闭状态进行过滤。
| 限定符 | 示例 |
|---|---|
state:open | libraries state:open mentions:vmg 匹配打开且在正文中提到 @vmg、且包含 “libraries” 的 issue。 |
state:closed | design state:closed in:body 匹配正文中包含 “design” 且已关闭的 issue。 |
is:open | performance is:open is:issue 匹配打开的 issue,标题中含 “performance”。 |
is:closed | android is:closed 匹配标题含 “android” 的已关闭 issue 与拉取请求。 |
搜索在合并队列中的拉取请求
您同样可以使用 is 限定符来查找已排队待合并的拉取请求。
| 限定符 | 示例 |
|---|---|
is:queued | is:queued 匹配当前排队等待合并的拉取请求。 |
按问题关闭原因搜索
您可以使用 reason 限定符,根据关闭 issue 时填写的原因进行过滤。
| 限定符 | 示例 |
|---|---|
reason:completed | libraries is:closed reason:completed 匹配因 “completed” 关闭的、标题含 “libraries” 的 issue。 |
reason:"not planned" | libraries is:closed reason:"not planned" 匹配因 “not planned” 关闭的、标题含 “libraries” 的 issue。 |
按仓库可见性过滤
您可以使用 is 限定符,根据仓库的可见性(公开/私有)过滤包含的 issue 与拉取请求。详情请参阅 仓库概述。
| 限定符 | 示例 |
|---|---|
is:public | is:public 匹配公开仓库中的 issue 与拉取请求。 |
is:private | is:private cupcake 匹配您有访问权限的私有仓库中包含 “cupcake” 的 issue 与拉取请求。 |
按作者搜索
author 限定符用于查找由特定用户或集成帐号创建的 issue 与拉取请求。
| 限定符 | 示例 |
|---|---|
author:USERNAME | cool author:gjtorikian 匹配由 @gjtorikian 创建且标题或正文含 “cool” 的 issue 与拉取请求。 |
in:body author:USERNAME | bootstrap in:body author:mdo 匹配由 @mdo 创建且正文中含 “bootstrap” 的 issue。 |
author:app/USERNAME | author:app/robot 匹配由名为 “robot” 的集成帐号创建的 issue。 |
-author:app/USERNAME | -author:app/robot 匹配除 “robot” 集成帐号以外的任何用户创建的 issue。减号(-)表示对该限定符的逻辑 NOT。 |
按受理人搜索
assignee 限定符用于查找分配给特定用户的 issue 与拉取请求。您可以使用通配符 * 搜索 **任意** 受理人的 issue(仅限单个仓库),也可以搜索 没有受理人的 issue 与拉取请求。
| 限定符 | 示例 |
|---|---|
assignee:USERNAME | assignee:vmg repo:libgit2/libgit2 匹配 libgit2 项目中分配给 @vmg 的 issue 与拉取请求。 |
assignee:* | is:open is:issue assignee:* 匹配单个仓库中分配给任意用户的打开 issue。 |
按提及搜索
mentions 限定符用于查找在正文中提到特定用户的 issue。更多信息请参阅 基础写作与格式语法。
| 限定符 | 示例 |
|---|---|
mentions:USERNAME | resque mentions:defunkt 匹配标题含 “resque” 且提及 @defunkt 的 issue。 |
按团队提及搜索
对于您所属的组织和团队,您可以使用 team 限定符查找在该组织内被 @提及的特定团队的 issue 或拉取请求。请将示例中的组织名和团队名替换为您自己的。
| 限定符 | 示例 |
|---|---|
team:ORGNAME/TEAMNAME | team:jekyll/owners 匹配提及 @jekyll/owners 团队的 issue。 |
team:ORGNAME/TEAMNAME is:open is:pr | team:myorg/ops is:open is:pr 匹配打开且提及 @myorg/ops 团队的拉取请求。 |
按评论者搜索
commenter 限定符用于查找包含特定用户评论的 issue。
| 限定符 | 示例 |
|---|---|
commenter:USERNAME | github commenter:defunkt org:github 匹配 GitHub 组织拥有的仓库中,标题含 “github”、且有 @defunkt 留言的 issue。 |
按参与者(在 issue 或拉取请求中涉及的用户)搜索
您可以使用 involves 限定符来查找在某种程度上涉及特定用户的 issue。involves 相当于在 author、assignee、mentions、commenter 四个限定符之间做逻辑 OR。换句话说,它会找到由该用户创建、分配、提及或评论过的 issue 与拉取请求。
| 限定符 | 示例 |
|---|---|
involves:USERNAME | involves:defunkt involves:jlord 匹配 @defunkt 或 @jlord 参与的 issue。 |
in:body involves:USERNAME | NOT bootstrap in:body involves:mdo 匹配 @mdo 参与且正文不含 “bootstrap” 的 issue。 |
搜索我的问题和拉取请求
在想要的限定符后加上 @me,即可搜索您创建或参与过的 issue 与拉取请求。任何接受用户名的限定符都可以与 @me 组合,以限制为您本人创建、被分配、被提及或被指定为审查者的 issue 与拉取请求。
| 限定符 | 示例 |
|---|---|
author:@me | author:@me 匹配您本人创建的 issue 与拉取请求。 |
is:pr commenter:@me | is:pr commenter:@me 匹配您评论过的拉取请求。 |
搜索已链接的 issue 与拉取请求
您可以将结果限定为仅包含通过关闭引用链接到拉取请求的 issue,或链接到可能被该拉取请求关闭的 issue 的拉取请求。
| 限定符 | 示例 |
|---|---|
linked:pr | repo:desktop/desktop is:open linked:pr 匹配 desktop/desktop 仓库中通过关闭引用链接到拉取请求的打开 issue。 |
linked:issue | repo:desktop/desktop is:closed linked:issue 匹配 desktop/desktop 仓库中已关闭且链接到可能被该拉取请求关闭的 issue 的拉取请求。 |
-linked:pr | repo:desktop/desktop is:open -linked:pr 匹配 desktop/desktop 仓库中未链接到任何拉取请求的打开 issue。 |
-linked:issue | repo:desktop/desktop is:open -linked:issue 匹配 desktop/desktop 仓库中未链接到任何 issue 的打开拉取请求。 |
按标签搜索
您可以使用 label 限定符通过标签缩小搜索范围。由于 issue 可拥有多个标签,您可以为每个标签使用独立的限定符。
| 限定符 | 示例 |
|---|---|
label:LABEL | label:"help wanted" language:ruby 匹配标签为 “help wanted” 且位于 Ruby 仓库的 issue。 |
in:body -label:LABEL label:LABEL | broken in:body -label:bug label:priority 匹配正文含 “broken”、未标记为 “bug” 但标记为 “priority” 的 issue。 |
label:LABEL label:LABEL | label:bug label:resolved 匹配同时拥有 “bug” 与 “resolved” 两个标签的 issue。 |
label:LABEL,LABEL | label:bug,resolved 匹配标签为 “bug” 或 “resolved” 的 issue(任意一个即可)。 |
按里程碑搜索
milestone 限定符用于查找属于仓库中某个 里程碑 的 issue 或拉取请求。
| 限定符 | 示例 |
|---|---|
milestone:MILESTONE | milestone:"overhaul" 匹配位于名为 “overhaul” 的里程碑中的 issue。 |
milestone:MILESTONE | milestone:"bug fix" 匹配位于名为 “bug fix” 的里程碑中的 issue。 |
按项目搜索
您可以使用 project 限定符查找与特定项目关联的 issue。项目必须通过项目编号搜索,编号可在项目 URL 的末尾找到。
| 限定符 | 示例 |
|---|---|
project:PROJECT_NUMBER | project:github/57 匹配 GitHub 组织的项目编号 57 所关联的 issue。 |
按提交状态搜索
您可以根据提交的状态过滤拉取请求。这在使用 Status API 或 CI 服务时尤为有用。
| 限定符 | 示例 |
|---|---|
status:pending | language:go status:pending 匹配 Go 仓库中状态为 pending 的拉取请求。 |
status:success | is:open status:success finally in:body 匹配打开且正文含 “finally”,状态为 success 的拉取请求。 |
status:failure | created:2015-05-01..2015-05-30 status:failure 匹配 2015 年 5 月间创建、且状态为 failure 的拉取请求。 |
按提交 SHA 搜索
如果您知道提交的具体 SHA 哈希,可用它搜索包含该 SHA 的拉取请求。SHA 至少需要七位字符。
| 限定符 | 示例 |
|---|---|
SHA | e1109ab 匹配提交 SHA 以 e1109ab 开头的拉取请求。 |
SHA is:merged | 0eff326d6213c is:merged 匹配已合并且 SHA 以 0eff326d6213c 开头的拉取请求。 |
按分支名称搜索
您可以根据来源分支(“head” 分支)或目标分支(“base” 分支)过滤拉取请求。
| 限定符 | 示例 |
|---|---|
head:HEAD_BRANCH | head:change is:closed is:unmerged 匹配来源分支名称以 “change” 开头、已关闭且未合并的拉取请求。 |
base:BASE_BRANCH | base:gh-pages 匹配目标分支为 gh-pages 的拉取请求。 |
按语言搜索
使用 language 限定符,您可以搜索编写语言为特定语言的仓库中的 issue 与拉取请求。
| 限定符 | 示例 |
|---|---|
language:LANGUAGE | language:ruby state:open 匹配 Ruby 仓库中打开的 issue。 |
按评论数量搜索
您可以结合 大于、小于和范围限定符,使用 comments 限定符按照评论数量搜索。
| 限定符 | 示例 |
|---|---|
comments:n | state:closed comments:>100 匹配关闭且评论数超过 100 条的 issue。 |
comments:n..n | comments:500..1000 匹配评论数在 500 到 1000 之间的 issue。 |
按交互次数搜索
您可以使用 interactions 限定符(同样支持大于、小于、范围)按交互次数过滤 issue 与拉取请求。交互次数指 issue 或拉取请求的评论数加上反应数之和。
| 限定符 | 示例 |
|---|---|
interactions:n | interactions:>2000 匹配交互次数超过 2000 的拉取请求或 issue。 |
interactions:n..n | interactions:500..1000 匹配交互次数在 500–1000 之间的拉取请求或 issue。 |
按反应次数搜索
您可以使用 reactions 限定符(同样支持大于、小于、范围)按反应次数过滤 issue 与拉取请求。
| 限定符 | 示例 |
|---|---|
reactions:n | reactions:>1000 匹配反应次数超过 1000 的 issue。 |
reactions:n..n | reactions:500..1000 匹配反应次数在 500–1000 之间的 issue。 |
搜索草稿拉取请求
您可以过滤仅显示草稿拉取请求。详情请参阅 关于拉取请求。
| 限定符 | 示例 |
|---|---|
draft:true | draft:true 匹配草稿拉取请求。 |
draft:false | draft:false 匹配已准备好审查的拉取请求。 |
按拉取请求审查状态和审查者搜索
您可以根据拉取请求的 审查状态(none、required、approved、changes_requested),以及审查者或请求审查者进行过滤。
| 限定符 | 示例 |
|---|---|
review:none | type:pr review:none 匹配尚未被审查的拉取请求。 |
review:required | type:pr review:required 匹配在合并前必须进行审查的拉取请求。 |
review:approved | type:pr review:approved 匹配已获审查者批准的拉取请求。 |
review:changes_requested | type:pr review:changes_requested 匹配审查者要求更改的拉取请求。 |
reviewed-by:USERNAME | type:pr reviewed-by:gjtorikian 匹配由指定人员审查的拉取请求。 |
review-requested:USERNAME | type:pr review-requested:benbalter 匹配请求特定人员审查的拉取请求。审查者完成审查后,其姓名将不再出现在搜索结果中。如果请求审查的对象是某个团队,则该团队的审查请求也会出现在搜索结果中。 |
user-review-requested:@me | type:pr user-review-requested:@me 匹配直接请求您审查的拉取请求。 |
team-review-requested:TEAMNAME | type:pr team-review-requested:github/docs 匹配收到 github/docs 团队审查请求的拉取请求。审查完成后,审查请求将不再出现在搜索结果中。 |
按创建或最近更新时间搜索 issue 或拉取请求
您可以使用 created 限定符按创建时间过滤 issue,使用 updated 限定符按最近更新时间过滤。
两者均接受日期参数。日期格式必须遵循 ISO8601 标准,即 YYYY-MM-DD(年-月-日)。您也可以在日期后追加可选的时间信息 THH:MM:SS+00:00,用于按小时、分钟、秒进行搜索。这里的 T 后面跟着 HH:MM:SS(时:分:秒),以及 UTC 偏移量(+00:00)。
在按日期搜索时,您可以使用大于、小于和范围限定符来进一步过滤结果。欲了解更多信息,请参阅 理解搜索语法。
| 限定符 | 示例 |
|---|---|
created:YYYY-MM-DD | language:c# created:<2011-01-01 state:open 匹配在 C# 仓库中创建于 2011 年前且仍打开的 issue。 |
updated:YYYY-MM-DD | weird in:body updated:>=2013-02-01 匹配正文含 “weird”,且于 2013 年 2 月后更新的 issue。 |
按关闭时间搜索 issue 或拉取请求
您可以使用 closed 限定符根据关闭时间过滤 issue 与拉取请求。
此限定符接受日期作为参数,日期格式同样遵循 ISO8601(YYYY-MM-DD),也可附加可选的时间信息 THH:MM:SS+00:00。
在按日期搜索时,您可以使用大于、小于和范围限定符来进一步过滤结果。欲了解更多信息,请参阅 理解搜索语法。
| 限定符 | 示例 |
|---|---|
closed:>YYYY-MM-DD | language:swift closed:>2014-06-11 匹配 Swift 仓库中 2014 年 6 月 11 日之后关闭的 issue 与拉取请求。 |
in:body closed:<YYYY-MM-DD | data in:body closed:<2012-10-01 匹配正文含 “data”,且在 2012 年 10 月前关闭的 issue 与拉取请求。 |
按合并时间搜索拉取请求
您可以使用 merged 限定符根据合并时间过滤拉取请求。
此限定符接受日期作为参数,日期格式同样遵循 ISO8601(YYYY-MM-DD),也可附加可选的时间信息 THH:MM:SS+00:00。
在按日期搜索时,您可以使用大于、小于和范围限定符来进一步过滤结果。欲了解更多信息,请参阅 理解搜索语法。
| 限定符 | 示例 |
|---|---|
language:LANGUAGE merged:<YYYY-MM-DD | language:javascript merged:<2011-01-01 匹配 2011 年前合并的 JavaScript 拉取请求。 |
in:title language:LANGUAGE merged:>YYYY-MM-DD | fast in:title language:ruby merged:>=2014-05-01 匹配 Ruby 仓库中标题含 “fast”,且在 2014 年 5 月后合并的拉取请求。 |
按拉取请求是否已合并进行搜索
您可以使用 is 限定符,根据合并或未合并的状态来筛选拉取请求。
| 限定符 | 示例 |
|---|---|
is:merged | bug is:pr is:merged 匹配包含 “bug” 关键字且已合并的拉取请求。 |
is:unmerged | error is:unmerged 匹配包含 “error” 关键字且未合并(即仍打开或已关闭但未合并)的拉取请求。 |
根据仓库是否已归档进行搜索
archived 限定符根据议题或拉取请求所在的仓库是否已归档来过滤结果。
| 限定符 | 示例 |
|---|---|
archived:true | archived:true GNOME 匹配您有访问权限的已归档仓库中,标题或正文包含 “GNOME” 的议题和拉取请求。 |
archived:false | archived:false GNOME 匹配您有访问权限的未归档仓库中,包含 “GNOME” 的议题和拉取请求。 |
根据对话是否已锁定进行搜索
您可以使用 is 限定符搜索对话已锁定的议题或拉取请求。更多信息请参阅 锁定对话。
| 限定符 | 示例 |
|---|---|
is:locked | code of conduct is:locked is:issue archived:false 匹配在未归档仓库中,对话已锁定且包含 “code of conduct” 关键字的议题或拉取请求。 |
is:unlocked | code of conduct is:unlocked is:issue archived:false 匹配在未归档仓库中,对话未锁定且包含 “code of conduct” 关键字的议题或拉取请求。 |
按缺失的元数据搜索
您可以使用 no 限定符,将搜索范围缩小到缺少某些元数据的议题和拉取请求。此类限定符不能与减号(-)一起使用来排除缺少元数据的项目。可筛选的元数据包括
- 标签
- 里程碑
- 指派人
- 项目
| 限定符 | 示例 |
|---|---|
no:label | priority no:label 匹配标题或正文包含 “priority” 且没有任何标签的议题和拉取请求。 |
no:milestone | sprint no:milestone type:issue 匹配未关联任何里程碑且标题或正文包含 “sprint” 的议题。 |
no:assignee | important no:assignee language:java type:issue 匹配未指派任何人、标题或正文包含 “important”,且位于 Java 仓库中的议题。 |
no:project | build no:project 匹配未关联任何项目且标题或正文包含 “build” 的议题。 |