我可以使用逻辑运算符 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 issuebug 的所有问题。

【讨论】:

终于!这是对这个好消息的支持,但现在没有人会支持我的回答:( 这个更改/新功能确实没有似乎已经传播到 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 搜索将支持用于嵌套和分组的括号,以及逻辑 ANDORNOT 运算符。我希望他们支持这样的事情:

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
    所有分配给我的公开 PR
      https://github.com --> "拉取请求" --> "已分配"。 直接链接:https://github.com/pulls/assigned
    所有在评论中提及我的公开 PR(通过 @my-username):
      https://github.com --> “拉取请求” --> “提及”。 直接链接:https://github.com/pulls/mentioned
    所有要求我审核的公开 PR
      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 - 这里他们提到了ANDORNOT 运算符,但他们似乎并没有真正实现这些,所以这个页面一定是过时的:(。
    https://github.com/isaacs/github/issues/660

【讨论】:

这不是答案。这是一篇愿望清单博文。 @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 标签吗?的主要内容,如果未能解决你的问题,请参考以下文章

matlab学习3

Linux运算符

shell逻辑运算符 1

布尔逻辑(运算顺序)A 和 B 或 C

我可以简化这个使用逻辑否定运算符的条件语句吗?

如何通过析取语句(逻辑“或”)对 pandas DataFrame 进行切片? [复制]