我不确定,但我对创建一个带有“问题 4”或标题中的内容的 github 拉取请求有一个模糊的记忆,它会自动将自己附加到我提交的项目中的问题 4。我最近又试了一次,但没有用——它只是创建了一个全新的问题。我在新的拉取请求页面上没有看到任何选项,例如“附加到问题”,也没有在问题页面上看到“为此问题打开新的拉取请求”。有没有办法做到这一点,以帮助项目所有者保持他们的问题页面清洁并避免重复?
编辑:澄清一下,我知道创建拉取请求总是会产生新问题。我想将拉取请求附加到现有问题。
我不确定,但我对创建一个带有“问题 4”或标题中的内容的 github 拉取请求有一个模糊的记忆,它会自动将自己附加到我提交的项目中的问题 4。我最近又试了一次,但没有用——它只是创建了一个全新的问题。我在新的拉取请求页面上没有看到任何选项,例如“附加到问题”,也没有在问题页面上看到“为此问题打开新的拉取请求”。有没有办法做到这一点,以帮助项目所有者保持他们的问题页面清洁并避免重复?
编辑:澄清一下,我知道创建拉取请求总是会产生新问题。我想将拉取请求附加到现有问题。
假设您使用普通的 github 方式分叉,那么向现有的上游问题添加拉取请求很容易。
只需使用任何受支持的关键字在您的提交消息中引用问题:
例如:“此提交修复 #116”
引用问题的文本不需要出现在提交的主题行中。
将您的提交推送到您的 github 存储库,拉取请求将自动附加到问题中。
注意:虽然不是必需的,但强烈建议您将任何将成为拉取请求的一部分的内容提交到特定于该问题的单独分支,因为该分支上的未来提交将附加到拉取请求中(由 github 自动)。因此,如果您没有创建单独的分支,将其留在 master 上,然后继续开发,那么您对 master 的所有不相关提交都会附加到您的拉取请求中。
枢纽项目可以做到这一点。
在要从以下位置发送拉取请求的存储库和分支中:
$ 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
您可以使用拉取请求 API从现有问题创建拉取请求:
$ 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/faraday/pulls )synchrony
分支中拉出(“head”:“ smparkes : synchrony ”)smparkes
master
分支technoweenie
("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的 repo faraday,想到了一些应该改变的东西,并为此在那个 repo 上做了一个 Issue,Issue # 15。后来,你发现没有其他人做出你提议的改变,你也有时间自己做。您将faraday分叉到您自己的帐户,然后编写您的更改并将它们推送到您的分支下名为synchrony的分支下。您认为technoweenie应该将这些更改拉到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 smparkes@api.github.com: hunter2
Now Issue #15 is a Pull Request.
如果您在 github 中使用 2-factor-auth,则需要在请求中提供 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
您现在(2020 年 2 月)可以在服务器端(github.com)执行此操作,而不是在客户端执行此操作(hub
如Christian Oudard的 回答)
请参阅“从侧边栏中查看和链接问题以及拉取请求”
您现在可以通过各自页面中的侧边栏链接问题和拉取请求。一旦链接的拉取请求被合并,此处建立的连接将自动关闭问题。
文档:
并且有一个具有该功能的搜索 API。
在存储库中查找所有未解决的问题,这些问题具有带有
linked:pr
搜索限定符的关闭拉取请求引用。
同样,找到存储库中缺少支持问题的所有拉取请求-linked:issue
。
您也可以使用Gub为您的问题提交拉取请求。
它还可以帮助您使用正确的 fork/pull-request 样式。
编辑:2013 年 10 月 5 日
要让 Gub 提交问题 #123 的拉取请求,您需要运行以下命令:
$ gub start 123
这将创建一个新的分支 issue-123。处理完问题后,执行:
$ gub finish
瞧!
注意:我是 Gub gem 的作者。
如果您启用了 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 转换为拉取请求。