Reputation: 22136
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?
Edit: To clarify, I know that creating a pull request always creates a new issue. I would like to instead attach the pull request to an existing issue.
Upvotes: 425
Views: 111954
Reputation: 1328172
Instead of doing that on the client side (with hub
, as in Christian Oudard answer), you now (February 2020) can do it using the GitHub Web interface.
See "View and link issues and pull requests from the sidebar "
You can now link issues and pull requests via the sidebar in their respective pages. Connections made here will automatically close issues once a linked pull request is merged.
And there is a search API with that feature.
Find all the open issues in a repository that have closing pull requests references with the
linked:pr
search qualifier.
Similarly, locate all the pull requests in a repository that are missing a supporting issue with-linked:issue
.
Ismoh refers in the comments to the discussion:
"GitHub Action: Pull request 'development' object/data, aka linked issues"
And Ismosh's Marketplace action for finding the linked issues of a pull request.
- name: Find linked issues
id: find-linked-issues
uses: Ismoh-Games/[email protected]
with:
token: ${{ secrets.GITHUB_TOKEN }}
repository: ${{ github.repository }} # optional
pull-request-number: ${{ github.event.pull_request.number }} # optional
copy-issues-labels: true # optional
Upvotes: 5
Reputation: 49956
The hub project can do this.
In the repository and branch that you want to send a pull request from:
$ hub pull-request -i 4
This uses the GitHub API, and attaches a pull request for the current branch to the existing issue number 4.
EDIT: Comment by @atomicules: To expand on the answer by @MichaelMior a full example is:
$ hub pull-request -i 4 -b USERNAME_OF_UPSTREAM_OWNER:UPSTREAM_BRANCH -h YOUR_USERNAME:YOUR_BRANCH URL_TO_ISSUE
Upvotes: 246
Reputation: 896
You can create a Pull Request from an existing Issue with the Pull Request API:
$ curl --user "smparkes" \
--request POST \
--data '{"issue": 15, "head": "smparkes:synchrony", "base": "master"}' \
https://api.github.com/repos/technoweenie/faraday/pulls
This creates a pull request:
technoweenie
at project faraday
(https://api.github.com/repos/technoweenie/faraday/pulls)synchrony
branch in smparkes
' fork ("head": "smparkes:synchrony")master
branch in technoweenie
's fork ("base": "master")smparkes
(--user "smparkes")Upvotes: 144
Reputation: 1220
If you have 2FA enabled, you can use pass the token with HTTPie:
http POST \
https://api.github.com/repos/<repo-owner>/<repo-name>/pulls \
issue=2 head=issue_2 base=master
"Authorization:token PUTAUTHTOKENHERE"
This will use the branch issue_2
to convert issue #2 into a pull request.
Upvotes: 0
Reputation: 1119
Using the git-hub tool, you could do this with:
$> git hub pull attach 123
This would convert issue #123 into pull request #123, thus maintaining all discussion about the issue in a single location.
Upvotes: 0
Reputation: 10902
Adding a pull request to an existing upstream issue is easy assuming you forked using the normal github means.
Simply reference the issue in your commit message using any of the supported keywords:
For example: "this commit fixes #116"
The text referencing the issue does not need to appear in the subject line of your commit.
Push your commit to your github repo and the pull request will be automatically appended to the issue.
Note: While it is not required, it is strongly recommended that you commit anything that will be part of a pull request to a separate branch specific to that issue, because future commits on that branch will be appended to the pull request (automatically by github). So, if you didn't make a separate branch, left it on master, and then kept developing, then all your unrelated commits to master would get appended to your pull request.
Upvotes: 260
Reputation: 8617
You may also use Gub to submit pull requests for your issue.
It also helps you use a proper fork/pull-request style.
Edit: 10/5/2013
To get Gub to submit pull-request for issue #123, you need to run the following:
$ gub start 123
This will create a new branch issue-123. Once you're done working on the issue, execute:
$ gub finish
Voila!
Note: I am the author of Gub gem.
Upvotes: 1
Reputation: 3428
in case you use 2-factor-auth with github you'll need to provide the authtoken as header in the request:
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
Upvotes: 3
Reputation: 30418
This other answer explains how to use cURL (curl
) to create a Pull Request from an Issue through the GitHub API. Here’s how to do it using HTTPie (http
), which produces an easier-to-read and easier-to-edit command:
$ http --auth "<your-GitHub-username>" \
POST \
https://api.github.com/repos/<issue-repo-owner>/<issue-repo-name>/pulls \
issue=<issue-number> head=<your-GitHub-username>:<your-fork-branch-name> base=<issue-repo-branch-name>
Then type your GitHub password when prompted.
You have logged into GitHub with username smparkes and password hunter2. You saw technoweenie’s repo faraday, thought of something that should be changed, and made an Issue on that repo for it, Issue #15. Later, you find that nobody else has made your proposed change, and you also have some time to do it yourself. You fork faraday to your own account, then write your changes and push them to your fork under a branch named synchrony. You think technoweenie should pull those changes to the master branch of his repo. This is the command you would write to convert your previous Issue into a Pull Request for this situation:
$ http --auth "smparkes" \
POST \
https://api.github.com/repos/technoweenie/faraday/pulls \
issue=15 head=smparkes:synchrony base=master
http: password for [email protected]: hunter2
Now Issue #15 is a Pull Request.
Upvotes: 10
Reputation: 67659
Another possible tool is the Issue2Pr website which turns your issues into Pull Requests.
It's very simple and effective!
Resources:
Upvotes: 17