我可以用逻辑运算符OR搜索github标签吗?

时间:2015-03-19 02:10:32

标签: github filter

我正试图在github上过滤我的所有问题:

label:bug OR label:enhancement

但显然这不起作用。我找到了这个页面 https://help.github.com/articles/searching-issues/ 我认为它必须写在那里,但我无法弄清楚如何做到这一点。

难道真的不能过滤两个标签的问题吗?我的意思是,这将是一项基本任务,不是吗?

如果有人能给我一个提示,我会很高兴听到它。

4 个答案:

答案 0 :(得分:43)

Github不支持以这种方式搜索标签。搜索问题被认为是" AND"而不是" OR"

这是一个用来试试这个的存储库。

Example demonstrating github supports "AND" in search

  

我的期望

应该出现所有增强,功能或两者兼有的问题。

  1. 增强功能

  2. 增强

  3. 特征

  4.   

    实际结果

    只展示了两者。

    1. 增强功能
    2. 因此它不支持OR运算符。

      <强>更新

      围绕这个的另一个乏味的黑客可能是在标签前使用 - (减号)符号删除不需要的标签。请看以下示例

      label:enhancement -label:bug -label:foo -label:bar
      

      这将列出所有没有foo,bar和bug作为标签的项目。这可行,但如果标签太多,可能会变得单调乏味。

      Filtering issues containing only the enhancements

答案 1 :(得分:8)

理想情况下,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)

相反,他们的搜索更具局限性,而且也很复杂,因为根据您键入的 where ,其行为非常不同。由于不支持上述搜索样式,因此,请考虑以下更有限的搜索尝试:

我的搜索

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/-> 拉动请求(在顶部),然后在此搜索栏中键入搜索内容,并以黄色突出显示:

enter image description here

...然后我得到了这种搜索行为:

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/上的几乎任何位置都可以使用),然后将我的搜索粘贴并粘贴到此搜索栏中:

enter image description here

...然后我得到了这种搜索行为,在这种情况下,这正是我想要的:

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相连。引擎盖,如上图所示。但是,在本地的“拉取请求”搜索栏中,每个搜索词在幕后都与AND连接在一起,并且如果给定字段有多个倍数,则所有的倍数都将被删除,最后一个除外< / em>,将保留。这就是我所说的“卷积”搜索行为,因为结果是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个单独的“拉取请求”搜索添加书签并添加书签,例如:

  1. is:open is:pr review-requested:ElectricRCAircraftGuy archived:false 
    author:my-teammate-1
    
  2. is:open is:pr review-requested:ElectricRCAircraftGuy archived:false 
    author:my-teammate-2
    
  3. is:open is:pr review-requested:ElectricRCAircraftGuy archived:false 
    author:my-teammate-3
    

“拉取请求”搜索的显示结果以更好的格式显示,因此,即使对3个“拉取请求”搜索进行标记并添加书签,也比对单个事物的单个全局搜索标记并添加书签更麻烦。您喜欢做什么。

如果您想做一些更复杂的事情,例如得到以下行为:

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)

...抱歉,目前无法实现。您必须利用适合您的搜索栏行为来创建多个子搜索,并在必要时使用-符号来排除结果。但是,您可以通过以下方法要求GitHub实现此更高级的搜索行为:打开问题here (not affiliated with GitHub--just a place to track issues),然后打开sending them a message here,并给他们提供指向您的问题以及此Stack Overflow答案的链接。

GitHub搜索快速参考速查表:

提醒:read here,快速回顾/总结使用GitHub全局搜索栏和GitHub Pull Request搜索栏时的期望。

默认的GITHUB拉请求(PR)搜索:

  1. 我创建的所有公开PR:
    1. https://github.com->单击顶部的“拉取请求”。
    2. 直接链接:https://github.com/pulls
  2. 分配给我的所有未完成的PR:
    1. https://github.com->“拉请求”->“已分配”。
    2. 直接链接:https://github.com/pulls/assigned
  3. 所有在评论中提及我的公开PR(通过@ my-username):
    1. https://github.com->“拉请求”->“提及”。
    2. 直接链接:https://github.com/pulls/mentioned
  4. 所有需要我审查的公开PR:
    1. https://github.com->“拉请求”->“审阅请求”。
    2. 直接链接:https://github.com/pulls/review-requested

自定义GITHUB拉请求(PR)搜索:

  1. 所有PRS已打开,作者:

    1. 使用拉取请求搜索栏:

      1. https://github.com->单击顶部的“拉取请求”。
      2. 直接链接:https://github.com/pulls
      3. 现在使用顶部中心/右上角的搜索栏。
      4. 请注意,此搜索栏一次仅限一位作者:

        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
        
      5. 以下是上面四个搜索中的第一个的示例URL:https://github.com/pulls?q=is%3Aopen+is%3Apr+archived%3Afalse+author%3Ausername-1

    2. 使用GitHub全局搜索栏(主搜索栏位于任何GitHub页面的左上角):

  2. 其他人对我的评论:

    1. 使用拉取请求搜索栏:

    2. 使用GitHub全局搜索栏(主搜索栏位于任何GitHub页面的左上角):

参考:

  1. https://webapps.stackexchange.com/questions/57933/how-to-search-with-logic-operators-on-github/111246#111246
  2. 另请参阅我的简短答案:https://webapps.stackexchange.com/questions/57933/how-to-search-with-logic-operators-on-github/142071#142071
  3. Getting started with searching on GitHub
    1. About searching on GitHub
    2. Searching issues and pull requests
    3. Using search to filter issues and pull requests
    4. Understanding the search syntax
    5. Troubleshooting search queries-在这里他们提到了ANDORNOT运算符,但是他们似乎并未真正实现这些运算符,因此该页面必须不存在-of-date:(。
  4. https://github.com/isaacs/github/issues/660

答案 2 :(得分:1)

自 2021 年 8 月以来,是的。

见:

<块引用>

Search issues by label using logical OR

您现在可以使用逻辑 OR 按标签搜索问题。

只需使用逗号分隔标签即可。
例如:

label:"good first issue",bug 

将列出带有 good first issuebug 标签的所有问题。

答案 3 :(得分:0)

例如,我正在过滤包含两个标签的问题,例如- https://api.github.com/search/issues?q=language:python+label:%22good%20first%20issue%22+label:%22help%20wanted%22+state:open&sort=created 这个问题很旧,但我希望它能对可能会遇到相同问题的所有人有所帮助。