如何在github上附加一个新的请求到现有的问题?
我不确定,但是我有一个模糊的记忆,用标题中的“Issue 4”或其他东西来创build一个github pull请求,并且它会自动附加到我提交给它的项目中的Issue 4。 我最近又试了一次,结果不起作用 – 它只是创build了一个全新的问题。 在新的请求页面上没有看到“附加问题”的选项,也没有在问题页面上显示“为此问题打开新的请求”。 有没有办法做到这一点,以帮助项目业主保持他们的问题页面干净,避免重复?
编辑 :澄清,我知道创build一个拉请求总是创build一个新的问题。 我想反而附加拉请求到一个现有的问题。
“枢纽”项目可以做到这一点:
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
假设你使用普通的github方法分叉 ,为现有的上游问题添加一个pull请求是容易的。
只需使用任何受支持的关键字在您的提交消息中引用问题:
- 关
- closures
- closures
- 固定
- 修复
- 固定
- 解决
- 做出决议
- 解决
例如:“这个提交修复了#116”
引用问题的文本不需要出现在提交的主题行中。
推送您的提交到您的github回购和拉请求将被自动附加到问题。
注意:虽然这不是必需的,但强烈build议您将任何将成为拉取请求的一部分提交给特定于该问题的单独分支,因为将来的提交将被附加到拉取请求(由github )。 所以,如果你没有创build一个独立的分支,把它留在主人身上,然后继续开发,那么你所有与主人无关的提交都会被附加到你的请求中。
您可以使用Pull Request API从现有问题创build合并请求 :
$ curl --user "smparkes" \ --request POST \ --data '{"issue": "15", "head": "smparkes:synchrony", "base": "master"}' \ https://api.github.com/repos/technoweenie/faraday/pulls
这会产生一个拉取请求:
- 请问
faraday
项目的technoweenie
(https://api.github.com/repos/ technoweenie / 法拉第 /拉) - 从
smparkes
的fork中synchrony
分支(“head”:“ smparkes : synchrony ”) - 到
technoweenie
分叉的master
分支(“base”:“ master ”) - 并将附加请求附加到问题15(“问题”:“ 15 ”)
- 与拉请求作者
smparkes
(– user “ smparkes ”) - 你会被提示input你的GitHub密码
另一个可能的工具是Issue2Pr网站 ,将您的问题变成合并请求。
这非常简单而有效!
资源:
- 公告
- GitHub仓库
其他答案解释了如何使用cURL ( curl
)通过GitHub API从问题创build合并请求。 下面是使用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和密码hunter2login到GitHub。 你看到了technoweenie的回购法拉第 ,想到应该改变的东西,并且在第15期发行了一个回购的问题 。 后来,你发现没有人提出你的build议,你也有一些时间去做。 您将法拉第分叉到您自己的帐户 ,然后编写您的更改并将其推送到名为同步的分支下的叉子。 你认为technoweenie应该把这些变化的回报 主分支。 这是你写的将你以前的问题转换成合并请求的命令:
$ 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
现在问题# 15是一个合并请求。
如果你用github使用2-authtoken,你需要在请求中提供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
您也可以使用Gub为您的问题提交拉取请求。
它也可以帮助您使用正确的分叉/拉请求风格。
编辑:10/5/2013
要让Gub提交问题#123的请求,你需要运行以下命令:
$ gub start 123
这将创build一个新的分支问题123。 一旦你完成了这个问题的工作,执行:
$ gub finish
瞧!
注:我是Gub的作者。
使用git-hub工具,你可以这样做:
$> git hub pull attach 123
这会将问题#123转换为拉请求#123,从而在单个位置维护关于该问题的所有讨论。