我不确定,但我有一个模糊的记忆,创建一个带有“问题4”或标题中的东西的github拉取请求,并且它自动附加到我提交给它的项目中的第4期。 我最近再次尝试过它并没有用 - 它只是创造了一个全新的问题。 我没有在新的请求页面上看到任何选项,例如“附加到问题”,也没有在问题页面上看到“为此问题打开新的拉取请求”。 有没有办法做到这一点,以帮助项目所有者保持他们的问题页面清洁,避免重复?
编辑 :为了澄清,我知道创建拉取请求总是会产生新问题。 我想将拉取请求附加到现有问题。
#1楼
另一个答案解释了如何使用cURL ( curl
)通过GitHub API从问题创建Pull请求。 以下是使用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的回购法拉第 ,想到了应该改变的东西,并在那个回购中提出了问题, 问题# 15 。 之后,您发现没有其他人提出您的建议更改,您也有时间自己做。 您将法拉第分配到您自己的帐户 ,然后编写您的更改并将其推送到名为synchrony的分支下的分支。 您认为technoweenie应该将这些更改提取到他的回购的主分支。 这是您要编写的命令,用于将您之前的问题转换为针对此情况的Pull请求:
$ 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
现在问题# 15是拉取请求。
#2楼
另一个可能的工具是Issue2Pr网站 ,它将您的问题转变为Pull Requests。
它非常简单有效!
资源:
#3楼
如果您使用2-factor-auth与github,您需要在请求中提供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
#4楼
您也可以使用Gub为您的问题提交拉取请求。
它还可以帮助您使用正确的fork / pull-request风格。
编辑:2013年10月5日
要让Gub提交问题#123的pull-request,您需要运行以下命令:
$ gub start 123
这将创建一个新的分支问题-123。 完成该问题后,请执行:
$ gub finish
瞧!
注意:我是Gub gem的作者。
#5楼
使用git-hub工具,您可以执行以下操作:
$> git hub pull attach 123
这会将问题#123转换为拉请求#123,从而在单个位置保持关于该问题的所有讨论。
#6楼
您可以使用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
这会创建一个拉取请求:
- 问
technoweenie
在项目faraday
(https://api.github.com/repos/ technoweenie / 法拉第 /拉) - 从
smparkes
的fork中的synchrony
分支中拉出来(“head”:“ smparkes : synchrony ”) - 在
technoweenie
的分支中的master
分支(“基础”:“ 主 ”) - 并将拉动请求附加到第15期(“问题”:“ 15 ”)
- 与pull请求作者
smparkes
(-- user “ smparkes ”) - 系统将提示您输入GitHub密码
#7楼
如果您启用了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转换为拉取请求。
#8楼
假设您使用普通的github方法进行分叉,则可以轻松地向现有上游问题添加拉取请求。
只需使用任何受支持的关键字在提交消息中引用该问题:
- 关
- 关闭
- 关闭
- 固定
- 修复
- 固定
- 解决
- 做出决议
- 解决
例如:“此提交修复了#116”
引用该问题的文本不需要出现在提交的主题行中。
将您的提交推送到您的github仓库,拉取请求将自动附加到该问题。
注意:虽然不是必需的,但强烈建议您将针对拉出请求的任何内容提交到特定于该问题的单独分支,因为该分支上的未来提交将附加到拉取请求(由github自动执行) )。 因此,如果您没有创建单独的分支,将其保留在master上,然后继续开发,那么所有与master无关的提交都将附加到您的pull请求中。
#9楼
“hub”项目可以做到这一点:
https://github.com/defunkt/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