编辑:为了澄清,我知道创建拉取请求总是会创建一个新问题。我想将拉取请求附加到现有的问题上。
Hub 项目能够实现此功能。
在你想要发送拉取请求的仓库和分支中:
$ 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
hub
,命令为brew install hub
。 - gcamphub pull-request -b 上游拥有者的用户名:上游分支 -h 您的用户名:您的分支 问题的URL链接
- atomicules您可以使用Pull Request API从现有的问题创建拉取请求:
$ curl --user "smparkes" \
--request POST \
--data '{"issue": 15, "head": "smparkes:synchrony", "base": "master"}' \
https://api.github.com/repos/technoweenie/faraday/pulls
这将创建一个pull request:
technoweenie
在项目 faraday
(https://api.github.com/repos/technoweenie/faraday/pulls) 上进行拉取操作smparkes
的分支("head": "smparkes:synchrony")进行拉取technoweenie
的分支 master
里("base": "master")smparkes
(--user "smparkes")这个答案解释了如何使用cURL(curl
)通过GitHub API从问题创建一个拉取请求。这里是使用HTTPie(http
)进行操作的方法,它可以生成更易于阅读和编辑的命令:
$ 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>
当提示时,请输入您的GitHub密码。
您使用用户名smparkes和密码hunter2登录了GitHub。您看到了technoweenie的仓库faraday,想到了一些应该改变的东西,并在该仓库上创建了一个问题Issue #15。后来,您发现没有其他人提出您的建议更改,而且您也有一些时间来自己完成它。您fork faraday to your own account,然后编写您的更改并将其推送到命名为synchrony的分支下的您的派生分支中。您认为technoweenie应该将这些更改拉取到他的仓库的master分支中。这是您将以前的问题转换为拉取请求的命令:
$ http --auth "smparkes" \
POST \
https://api.github.com/repos/technoweenie/faraday/pulls \
issue=15 head=smparkes:synchrony base=master
http: password for smparkes@api.github.com: hunter2
hub
,参见Christian Oudard的答案)中执行此操作,您现在(2020 年 2 月)可以在服务器端(github.com)上执行。
请参阅“从侧边栏查看并链接问题和拉取请求”。
现在,您可以通过各自的页面侧边栏链接问题和拉取请求。在此处建立的连接将在链接的拉取请求合并后自动关闭问题。
文档:
还有一个带有该功能的搜索 API。
使用
linked:pr
搜索修饰符,可以在存储库中找到所有具有关闭拉取请求引用的未解决问题。
类似地,使用-linked:issue
可以找到存储库中缺少支持问题的所有拉取请求。
"GitHub Action: Pull request 'development' object/data, aka linked issues"
以及 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
如果您在Github中使用双因素身份验证,您需要将授权令牌作为请求头提供:
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
您也可以使用Gub提交拉取请求以解决您的问题。
这还可以帮助您使用适当的fork/pull-request风格。
编辑:2013年10月5日
要让Gub为第123个问题提交拉取请求,您需要运行以下命令:
$ gub start 123
$ gub finish
Voila!
注意:我是Gub gem的作者。
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转换为拉取请求。
$> git hub pull attach 123
这将把问题#123转换为拉取请求#123,从而在单个位置维护有关该问题的所有讨论。