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?

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


当前回答

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

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

编辑:10/5/2013

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

$ gub start 123

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

$ gub finish

拖鞋!

注:我是Gub gem的作者。

其他回答

你现在(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

你可以用Pull Request API从一个已经存在的问题中创建一个Pull Request:

$ curl --user "smparkes" \
       --request POST \
       --data '{"issue": 15, "head": "smparkes:synchrony", "base": "master"}' \
       https://api.github.com/repos/technoweenie/faraday/pulls

这将创建一个拉请求:

询问Faraday project的technoweenie (https://api.github.com/repos/technoweenie/faraday/pulls) 从smparkes的fork中的同步分支中提取("head": "smparkes:synchrony") 到technoweenie's fork中的master分支("base": "master") 并将拉请求附加到issue 15(“issue”:15) 与拉请求作者smparkes(——user "smparkes") 你会被提示输入你的GitHub密码

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

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

编辑:10/5/2013

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

$ gub start 123

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

$ gub finish

拖鞋!

注:我是Gub gem的作者。

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

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

$ 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

如果你在github中使用2-factor-auth,你需要在请求中提供authtoken作为头部:

curl -u "<your_username>:<your_pw>" \
     --header 'X-GitHub-OTP: <your_authtoken>' \
     --request POST \
     --data '{"issue":"<issue_nr>", "head":"<your_username>:<your_forks_branchname>", "base":"<upstream_branch>"}' \
     https://api.github.com/repos/<upstream_user>/<upstream_repo>/pulls