我可以使用逻辑运算符 OR 搜索 github 标签吗?
Posted
技术标签:
【中文标题】我可以使用逻辑运算符 OR 搜索 github 标签吗?【英文标题】:Can I search github labels with logical operator OR? 【发布时间】:2015-05-22 01:31:39 【问题描述】:我正在尝试像这样过滤 github 上的所有问题:
label:bug OR label:enhancement
但显然这不起作用。我找到了这个页面 https://help.github.com/articles/searching-issues/ 我认为它必须写在那里,但我不知道该怎么做。
难道真的不能过滤两个标签的问题吗?我的意思是,这将是一项基本任务,不是吗?
如果有人能就这件事给我一个提示,我会很高兴听到的。
【问题讨论】:
相关:How to search with logic operators on GitHub? 自 2021 年 8 月起,是的:label:bug,enhancement
。见my answer below
【参考方案1】:
Github 不支持以这种方式搜索标签。搜索问题被认为是“与”而不是“或”。
这是一个用于尝试的存储库。
Example demonstrating github supports "AND" in search
我的期望
应该出现所有增强、功能或两者兼有的问题..
增强和功能
增强
功能
实际结果
只显示了两者。
-
增强和功能
因此不支持 OR 运算符。
更新
另一个乏味的技巧是在标签前使用 -(减号)符号删除不需要的标签。看下面的例子
label:enhancement -label:bug -label:foo -label:bar
这将列出所有没有 foo、bar 和 bug 作为标签的项目。这可行,但如果标签太多,可能会变得乏味。
Filtering issues containing only the enhancements
2021 年更新
现在您可以使用 OR 操作进行搜索。请查看@VonC 的答案
【讨论】:
似乎是他们搜索的一个很好的补充...给他们一个反馈 :-) 他们可能会添加它 这里是一个非官方的地方,用于记录您希望 github 修复的 github 问题,并针对此特定问题打开了一个问题:github.com/isaacs/github/issues/660。要引起 github 的注意,只需 contact GitHub 并参考这个问题和这个 Stack Overflow 问题,以及 this one。 这已经过时了,请参阅@VonC 的回答【参考方案2】:自 2021 年 8 月起,是的。
但是,它尚未传播到 GitHub Enterprise(2021 年 10 月)
见:
Search issues by label using logical OR
您现在可以使用逻辑 OR 按标签搜索问题。
只需使用逗号分隔标签。 例如:
label:"good first issue",bug
将列出带有标签
good first issue
或bug
的所有问题。
【讨论】:
终于!这是对这个好消息的支持,但现在没有人会支持我的回答:( 这个更改/新功能确实没有似乎已经传播到 GitHub Enterprise,这是许多公司内部使用的 GitHub 的付费版本,例如我工作的地方。 @GabrielStaples 确实如此。我怀疑 GHE 最终会跟进。你用的是什么版本? 如何查看版本? @GabrielStaples 检查***.com/q/25851519/6309 是否有帮助。【参考方案3】:截至 2021 年 8 月,另请参阅此处:Can I search github labels with logical operator OR? 和:https://github.blog/changelog/2021-08-02-search-issues-by-label-using-logical-or/。
理想情况下,GitHub 搜索将支持用于嵌套和分组的括号,以及逻辑 AND
、OR
和 NOT
运算符。我希望他们支持这样的事情:
is:open AND is:pr AND (review-requested:ElectricRCAircraftGuy OR
assignee:ElectricRCAircraftGuy) AND NOT(review-requested:"team:ORGNAME/team-1") AND
archived:false AND (author:my-teammate-1 OR author:my-teammate-2 OR
author:my-teammate-3)
相反,他们的搜索受到更多限制,而且非常复杂,因为它具有非常不同的行为,具体取决于您键入搜索的位置。由于不支持上述搜索样式,让我们考虑这种更有限的搜索尝试:
我的搜索:
is:open is:pr review-requested:ElectricRCAircraftGuy archived:false
author:my-teammate-1 author:my-teammate-2 author:my-teammate-3
我想要的行为是这样的:
is:open AND is:pr AND review-requested:ElectricRCAircraftGuy AND archived:false AND
(author:my-teammate-1 OR author:my-teammate-2 OR author:my-teammate-3)
但根据您进行此搜索的位置,您将获得两种截然不同的行为。如果我转到https://github.com/ --> Pull requests(在顶部)并在此处以黄色突出显示的搜索栏中输入搜索:
...然后我得到这个搜索行为:
is:open AND is:pr AND review-requested:ElectricRCAircraftGuy AND archived:false AND author:my-teammate-3
请注意,所有author
字段除了最后一个字段已被删除。您一次只能搜索一个给定的字段!这太局限了!就好像我已经完成了这个搜索:
is:open is:pr review-requested:ElectricRCAircraftGuy archived:false
author:my-teammate-3
但是,如果我使用下面突出显示的全局搜索栏(https://github.com/ 上几乎任何地方都可用),然后将我的搜索复制并粘贴到此搜索栏中:
...然后我得到这个搜索行为,这正是我在这种情况下想要的:
is:open AND is:pr AND review-requested:ElectricRCAircraftGuy AND archived:false AND
(author:my-teammate-1 OR author:my-teammate-2 OR author:my-teammate-3)
这意味着在全局搜索栏中,每个搜索词在后台与 AND
连接,除非给定字段有多个,然后每个搜索词在后台与 OR
连接,如如上所示。但是,在本地 Pull Request 搜索栏中,每个搜索词都在后台与 AND
连接,如果给定字段有多个倍数,则删除所有倍数除了最后一个,保留。这就是我所说的“复杂”搜索行为,因为结果是 1) 令人困惑,2) 不同,取决于您使用的搜索栏,以及 3) 限制:即使您了解 GitHub 搜索的所有内容,仍然无法获得您可能想要的搜索结果。如果没有广泛的研究和反复试验,很难理解正在发生的事情,而这正是我必须做的。 :(
那么,如果您想查看 my-teammate-1 或 my-teammate-2 或 my-teammate-3 的所有“审查请求”列表,您有哪些选择?好吧,你可以做一个单一的全局搜索并将其加入书签,如下所示:
is:open is:pr review-requested:ElectricRCAircraftGuy archived:false
author:my-teammate-1 author:my-teammate-2 author:my-teammate-3
或者您可以将 3 个单独的 Pull Request 搜索添加为书签,如下所示:
-
公开的、未归档的 PR 请求我的审核,并由
my-teammate-1
is:open is:pr review-requested:ElectricRCAircraftGuy archived:false
author:my-teammate-1
公开的、未归档的 PR 请求我的审核,并由 my-teammate-2
is:open is:pr review-requested:ElectricRCAircraftGuy archived:false
author:my-teammate-2
公开的、未归档的 PR 要求我进行审核,并由 my-teammate-3
is:open is:pr review-requested:ElectricRCAircraftGuy archived:false
author:my-teammate-3
Pull Request 搜索的显示结果以更好的格式显示,因此即使对 3 个 Pull Request 搜索添加书签比对同一事物的单个全局搜索添加书签更痛苦,但它可能是你喜欢做什么。
如果你想做一些更复杂的事情,比如得到这个行为:
is:open AND is:pr AND (review-requested:ElectricRCAircraftGuy OR
assignee:ElectricRCAircraftGuy) AND NOT(review-requested:"team:ORGNAME/team-1") AND
archived:false AND (author:my-teammate-1 OR author:my-teammate-2 OR
author:my-teammate-3)
...抱歉,目前不可能。您必须利用适合您的搜索栏行为创建多个子搜索,并在必要时使用-
符号来排除结果。但是,您可以通过打开问题 here (not affiliated with GitHub--just a place to track issues) 然后 sending them a message here 并向他们提供指向您的问题和此 Stack Overflow 答案的链接来请求 GitHub 实施这种更高级的搜索行为。
GitHub 搜索快速参考备忘单:
提醒:read here 用于快速复习/总结使用 GitHub 全局搜索栏与 GitHub Pull Request 搜索栏时的预期结果。
默认 GITHUB 拉取请求 (PR) 搜索:
-
所有我创建的公开 PR:
-
https://github.com --> 点击最顶部的“Pull requests”。
直接链接:https://github.com/pulls
-
https://github.com --> "拉取请求" --> "已分配"。
直接链接:https://github.com/pulls/assigned
-
https://github.com --> “拉取请求” --> “提及”。
直接链接:https://github.com/pulls/mentioned
-
https://github.com --> "拉取请求" --> "审查请求"。
直接链接:https://github.com/pulls/review-requested
自定义 GITHUB 拉取请求 (PR) 搜索:
所有 PRS 已打开,作者:
使用拉取请求搜索栏:
https://github.com --> 点击最顶部的“Pull requests”。
直接链接:https://github.com/pulls
现在使用顶部中心/右上角的搜索栏。
请注意,此搜索栏一次仅限于一位作者:
is:open is:pr archived:false author:username-1
is:open is:pr archived:false author:username-2
is:open is:pr archived:false author:username-3
is:open is:pr archived:false author:username-4
这是上面 4 个搜索中第一个的示例 URL:https://github.com/pulls?q=is%3Aopen+is%3Apr+archived%3Afalse+author%3Ausername-1
[最佳]使用 GitHub 全局搜索栏(任何 GitHub 页面左上角的主搜索栏):
此搜索栏同时允许多个作者,但显示与上面的拉取请求搜索略有不同(看起来不如):
is:open is:pr archived:false author:username-1 author:username-2 author:username-3 author:username-4
这是在 GitHub 全局搜索栏中执行此搜索后 URL 的样子:https://github.com/search?q=is%3Aopen+is%3Apr+archived%3Afalse+author%3Ausername-1+author%3Ausername-2+author%3Ausername-3+author%3Ausername-4
其他人要求我进行的评论:
使用拉取请求搜索栏:
请注意,此搜索栏一次仅限于一位作者:
is:open is:pr archived:false review-requested:my-username author:username-1
is:open is:pr archived:false review-requested:my-username author:username-2
is:open is:pr archived:false review-requested:my-username author:username-3
is:open is:pr archived:false review-requested:my-username author:username-4
这是上面第一次搜索的示例 URL:https://github.com/pulls?q=is%3Aopen+is%3Apr+archived%3Afalse+review-requested%3Amy-username+author%3Ausername-1
[最佳]使用 GitHub 全局搜索栏(任何 GitHub 页面左上角的主搜索栏):
此搜索栏同时允许多个作者,但显示与上面的拉取请求搜索略有不同(看起来不如):
is:open is:pr archived:false review-requested:my-username author:username-1 author:username-2 author:username-3 author:username-4
上述全局搜索产生的网址:https://github.com/search?q=is%3Aopen+is%3Apr+archived%3Afalse+review-requested%3Amy-username+author%3Ausername-1+author%3Ausername-2+author%3Ausername-3+author%3Ausername-4
另见:
-
我的回答是关于如何通过“to branch”、“from branch”和作者搜索 PR,包括使用自定义 Chrome 搜索引擎执行此操作,您可以在搜索中快速触发酒吧:
How can I filter all GitHub pull requests for a specific target branch.
参考资料:
-
https://webapps.stackexchange.com/questions/57933/how-to-search-with-logic-operators-on-github/111246#111246
也可以在这里查看我的简短回答:https://webapps.stackexchange.com/questions/57933/how-to-search-with-logic-operators-on-github/142071#142071
Getting started with searching on GitHub
-
About searching on GitHub
Searching issues and pull requests
Using search to filter issues and pull requests
Understanding the search syntax
Troubleshooting search queries - 这里他们提到了
AND
、OR
和NOT
运算符,但他们似乎并没有真正实现这些,所以这个页面一定是过时的:(。
【讨论】:
这不是答案。这是一篇愿望清单博文。 @JRomero,我不同意你的说法,这不是一个有效的答案。我说明了当前的行为是什么,以及如何在在某些情况下获得所需的行为。我解释了限制以及何时不起作用。我还解释了如何联系 GitHub 提出功能请求。由于我和其他人的努力,他们现在可能已经实施了解决方案(请参阅我刚刚添加到答案顶部的新链接)。我知道我的回答已在 GitHub 上的多个位置链接到关于此讨论的内容,并且可能有助于促成结果。【参考方案4】:例如,我正在过滤包含两个标签的问题,例如 -
https://api.github.com/search/issues?q=language:python+label:%22good%20first%20issue%22+label:%22help%20wanted%22+state:open&sort=created
这个问题很老了,但我希望它能帮助任何可能遇到同样问题的人。
【讨论】:
什么意思?您的答案过滤在一个标签上。没有真正回答问题还是我错过了什么? @SybillePeters 编辑了答案,感谢您通知我。 有趣。您确定应用了 OR。我浏览了列表,我检查的结果有两个标签。我开始了一个不同的查询,因为它更容易检查:api.github.com/search/…以上是关于我可以使用逻辑运算符 OR 搜索 github 标签吗?的主要内容,如果未能解决你的问题,请参考以下文章