I'm not sure, but I have a vague memory of creating a github pull request with "Issue 4" or something in the title, and it automatically attached itself to Issue 4 in the project that I was submitting it to. I tried it again recently and it didn't work -- it just created a brand new issue instead. I don't see any options like "Attach to issue" on the new pull request page, nor "Open a new pull request for this issue" on the issue page. Is there any way to do this, to help project owners keep their Issues page clean and avoid duplication?

编辑:澄清一下,我知道创建拉请求总是会产生一个新问题。我想把拉请求附加到一个现有的问题上。


当前回答

你现在(2020年2月)可以在服务器端(github.com)做,而不是在客户端(使用hub,如Christian Oudard的回答)做。

参见“查看和链接问题,并从侧栏提取请求”

您现在可以通过各自页面中的侧边栏链接问题和提取请求。在这里建立的连接将在合并链接的pull请求后自动关闭问题。

文档:

有一个带有这个功能的搜索API。

使用linked:pr搜索限定符查找存储库中具有关闭拉请求引用的所有开放问题。 类似地,使用-linked:issue定位存储库中缺少支持问题的所有拉请求。


Ismoh在评论中提到了讨论:

GitHub Action:拉请求“开发”对象/数据,又名链接问题

Ismosh的Marketplace操作用于查找拉请求的链接问题。

    - name: Find linked issues
      id: find-linked-issues
      uses: Ismoh-Games/find-linked-issues@v0.0.1
      with:
        token: ${{ secrets.GITHUB_TOKEN }}
        repository: ${{ github.repository }} # optional
        pull-request-number: ${{ github.event.pull_request.number }} # optional
        copy-issues-labels: true # optional

其他回答

枢纽项目可以做到这一点。

在存储库和分支中,你想发送一个拉请求:

$ hub pull-request -i 4

这使用了GitHub API,并将当前分支的拉请求附加到现有问题4上。


编辑:@atomicules的评论:为了扩展@MichaelMior的答案,一个完整的例子是:

$ hub pull-request -i 4 -b USERNAME_OF_UPSTREAM_OWNER:UPSTREAM_BRANCH -h YOUR_USERNAME:YOUR_BRANCH URL_TO_ISSUE

如果你启用了2FA,你可以使用HTTPie传递令牌:

http POST \
    https://api.github.com/repos/<repo-owner>/<repo-name>/pulls \
    issue=2 head=issue_2 base=master
    "Authorization:token PUTAUTHTOKENHERE"

这将使用分支issue_2将问题#2转换为一个拉请求。

向现有的上游问题添加拉请求很容易,假设您使用正常的github方法进行分叉。

使用任何支持的关键字在提交消息中引用问题:

关闭 关闭 关闭 修复 修复 固定 解决 解决了 解决

例如:"this commit fixes #116"

引用该问题的文本不需要出现在提交的主题行中。

推送你的提交到你的github回购和拉请求将自动追加到问题。

注意:虽然这不是必需的,但强烈建议您将任何作为拉取请求一部分的内容提交到特定于该问题的单独分支,因为在该分支上的未来提交将被追加到拉取请求(由github自动执行)。所以,如果你没有创建一个独立的分支,把它留在master上,然后继续开发,那么所有你对master不相关的提交都会被追加到你的pull request中。

你现在(2020年2月)可以在服务器端(github.com)做,而不是在客户端(使用hub,如Christian Oudard的回答)做。

参见“查看和链接问题,并从侧栏提取请求”

您现在可以通过各自页面中的侧边栏链接问题和提取请求。在这里建立的连接将在合并链接的pull请求后自动关闭问题。

文档:

有一个带有这个功能的搜索API。

使用linked:pr搜索限定符查找存储库中具有关闭拉请求引用的所有开放问题。 类似地,使用-linked:issue定位存储库中缺少支持问题的所有拉请求。


Ismoh在评论中提到了讨论:

GitHub Action:拉请求“开发”对象/数据,又名链接问题

Ismosh的Marketplace操作用于查找拉请求的链接问题。

    - name: Find linked issues
      id: find-linked-issues
      uses: Ismoh-Games/find-linked-issues@v0.0.1
      with:
        token: ${{ secrets.GITHUB_TOKEN }}
        repository: ${{ github.repository }} # optional
        pull-request-number: ${{ github.event.pull_request.number }} # optional
        copy-issues-labels: true # optional

您也可以使用Gub为您的问题提交拉请求。

它还可以帮助您使用合适的fork/pull-request样式。

编辑:10/5/2013

为了让Gub提交issue #123的pull-request,你需要运行以下命令:

$ gub start 123

这将创建一个新的分支issue-123。一旦你解决了这个问题,执行:

$ gub finish

拖鞋!

注:我是Gub gem的作者。