79

我在 GitHub 上的项目上创建了一个到特定远程分支的拉取请求。一段时间后,远程分支被删除。

如何更改拉取请求以指向另一个分支(特别是master)?

4

7 回答 7

79

更新:正如迈克尔在下面指出的那样,现在这是可能的

您现在可以更改打开的拉取请求的基本分支。创建拉取请求后,您可以修改基础分支,以便将拉取请求中的更改与不同的分支进行比较。通过更改原始拉取请求的基础分支而不是使用正确的基础分支打开新分支,您将能够保留有价值的工作和讨论。

单击Edit拉取请求标题旁边的按钮以显示基本分支选择器。

如何更改拉取请求的基本分支的动画示例。


旧答案

你不能。只需提出一个新的拉取请求。

于 2012-04-09T23:18:01.077 回答
35

尽管没有记录,但您可以使用 GitHub REST API 执行此操作。

这个答案中解释了 API 的用法,但基本上你可以发出这样的 REST 请求:

$ curl --user "tom" \
       --request PATCH \
       --data '{"issue": "15", "head": "tom:new-branch", "base": "master"}' \
       https://api.github.com/repos/fred/fabproj/pulls

这将更改fred/fabprojrepo 上的 issue 15 体现的拉取请求,以使用forknew-branch上的tom/fabproj分支。

编辑:注意:根据评论,以上仅用于的拉取请求附加到现有问题

于 2012-08-16T09:07:31.950 回答
19

截至 2016 年 8 月 15 日,这现在可以通过Github本地实现:

您现在可以更改打开的拉取请求的基本分支。创建拉取请求后,您可以修改基础分支,以便将拉取请求中的更改与不同的分支进行比较。通过更改原始拉取请求的基础分支而不是使用正确的基础分支打开新分支,您将能够保留有价值的工作和讨论。

于 2016-08-15T19:08:28.353 回答
2

我可以更改目标分支。确实,我们不能在 PR 中编辑目标分支的名称。但诀窍是将分支重命名为其他内容,并将目标分支重命名为 PR 中已经存在的分支。

示例:我的 PR 的名称类似于“dev-4.9”。还有一个名为“qa-4.9”的分支。我想要的只是“qa-4.9”应该是 PR 目标分支。步骤:1 1)将分支“dev-4.9”重命名为“original-dev-4.9”

git checkout dev-4.9
git branch -w original-dev-4.9
git push origin original-dev-4.9

2) 将分支“qa-4.9”重命名为“dev-4.9”。

git checkout qa-4.9
git branch -w dev-4.9
git push origin dev-4.9 -f (force push to write entire branch to reflect dev-4.9)

3) 刷新 PR url 并查看 qa-4.9 中反映的提交。

于 2016-11-28T14:15:58.217 回答
1

不要将与 PR 相关的所有评论丢失到已删除的分支:

  1. 再次在本地创建具有相同名称和要合并到的分支具有相同内容的分支;
  2. 推送该分支以重新创建远程分支;接着
  3. 重新打开 PR 到分支。

例如,您有一个到 branch1 的 PR,该 PR 已被删除。您现在想要合并以掌握并保留对现有 PR 的评论:

  1. git结账大师
  2. git 拉
  3. git checkout -b 分支1
  4. git 推送
  5. 重新打开你的 PR 到 branch1
  6. 合并到 branch1 时,合并到 master。

这有点骇人听闻,但比销毁大量评论要好得多。

于 2016-02-03T03:48:30.637 回答
0

Github 现在支持这个。PR右端的编辑按钮。

于 2017-02-06T07:27:50.463 回答
-2

理论上...

你应该使用github api

示例:使用curl编辑拉取请求

curl --user "your_github_username" \
     --request PATCH \
     --data '{"title":"newtitle","body":"newbody",...}' \
     https://api.github.com/repos/:owner/:repo/pulls/:number

您可以在github developer doc中找到详细的数据列表

示例:更改我的拉取请求的名称

curl --user "jeremyclement" \
     --request PATCH \
     --data '{"title":"allows the control of files and folders permissions."}' \
     https://api.github.com/repos/Gregwar/Cache/pulls/9

但在实践中...

似乎这些字段是不可编辑的head/labelhead/ref目前,唯一的解决方案似乎是Amber

于 2014-03-27T15:26:23.103 回答