How do you attach a new pull request to an existing issue on github?
我不确定,但我有一个模糊的记忆创建一个"问题4"或标题中的Github拉请求,它自动附加到我提交它的项目中的问题4。我最近又试了一次,但没用——它只是创造了一个全新的问题。我在新的请求页面上看不到任何选项,如"附加到问题",在问题页面上也看不到"打开此问题的新请求"。有没有什么方法可以做到这一点,以帮助项目所有者保持他们的问题页面干净,避免重复?
编辑:为了澄清,我知道创建拉请求总是会创建一个新问题。我想把请求附加到现有问题上。
"中心"项目可以做到这一点:
https://github.com/defunkt/hub网站
在要从中发送请求的存储库和分支中:
1 | $ hub pull-request -i 4 |
号
这将使用GitHub API,并将当前分支的请求附加到现有问题编号4。
edit:comment by@atomicules:要扩展@michaelmior的答案,完整示例如下:
1 | $ hub pull-request -i 4 -b USERNAME_OF_UPSTREAM_OWNER:UPSTREAM_BRANCH -h YOUR_USERNAME:YOUR_BRANCH URL_TO_ISSUE |
假设您使用普通的github方法分叉,那么向现有的上游问题添加拉请求很容易。
只需使用支持的任何关键字引用提交消息中的问题:
- 关闭
- 关闭
- 关闭
- 修理
- 修正
- 固定的
- 决定
- 解决
- 断然的
例如:"此提交修复程序116"
引用问题的文本不需要出现在提交的主题行中。
将您的提交推送到Github回购,请求将自动附加到问题中。
注意:虽然不是必需的,但强烈建议您向特定于该问题的单独分支提交请求中的任何内容,因为该分支的将来提交将附加到请求中(由Github自动执行)。所以,如果您没有创建单独的分支,将其留在master上,然后继续开发,那么您对master的所有不相关的提交都将被附加到pull请求中。
您可以使用拉请求API从现有问题创建拉请求:
1 2 3 4 | $ curl --user"smparkes" \ --request POST \ --data '{"issue":"15","head":"smparkes:synchrony","base":"master"}' \ https://api.github.com/repos/technoweenie/faraday/pulls |
这将创建拉请求:
- 询问
technoweenie 项目(https://api.github.com/repos/technoweenie/faraday/draws) - 从
smparkes 叉中的synchrony 分支中拔出("head":"smparkes:synchronomy")。 - 到
technoweenie 叉中的master 分支("base":"master")。 - 并将请求附加到第15版("发行":"15")。
- 使用拉请求作者
smparkes (--用户"smparkes")。 - 系统将提示您输入GitHub密码
另一个可能的工具是issue2pr网站,它将您的问题转化为拉请求。
它非常简单有效!
。
资源:
- 公告
- Github存储库
另一个答案解释了如何使用curl(
1 2 3 4 | $ 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和密码猎人2登录GitHub。你看到Technoweenie的repo faraday,想到了一些应该改变的事情,并在该repo上提出了一个问题,问题15。后来,你发现没有其他人做出你提议的改变,你也有时间自己去做。你将法拉第分叉到你自己的账户,然后写下你的更改,并将它们推到你的分叉下一个名为"同步"的分支下。你认为Technoweenie应该把这些变化转移到他的回购协议的主分支。这是您将编写的命令,用于将以前的问题转换为针对此情况的请求:
1 2 3 4 | $ http --auth"smparkes" \ POST \ https://api.github.com/repos/technoweenie/faraday/pulls \ issue=15 head=smparkes:synchrony base=master |
1 | http: password for [email protected]: hunter2 |
。
现在,问题15是一个拉请求。
如果在Github中使用2因子身份验证,则需要在请求中提供authtoken作为头:
1 2 3 4 5 | 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提交您的问题的请求。
它还帮助您使用适当的分叉/拉请求样式。
编辑:2013年10月5日
要让Gub提交Pull Request for Issue 123,您需要运行以下程序:
1 | $ gub start 123 |
这将创建一个新的分支问题-123。完成问题处理后,执行:
1 | $ gub finish |
。
哇!
注:我是Gub Gem的作者。
如果启用了2FA,则可以将令牌与httpie一起使用:
1 2 3 4 | http POST \ https://api.github.com/repos/<repo-owner>/<repo-name>/pulls \ issue=2 head=issue_2 base=master "Authorization:token PUTAUTHTOKENHERE" |
这将使用分支
使用git-hub工具,您可以使用以下方法完成此操作:
埃多克斯1〔9〕
这将把问题123转换成拉式请求123,从而将有关该问题的所有讨论保持在一个位置。