如何更改拉取请求的基本分支?


79

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

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


3
还要求在github.com/isaacs/github/issues/18上发送消息到GitHub,并收到标准的“我们将添加到内部bugtracker答复”。
Ciro Santilli郝海东冠状病六四事件法轮功

Answers:


79

更新:正如Michael在下面指出的那样,现在可以

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

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

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


旧答案

你不能 只需提出一个新的请求即可。


10
直截了当,但不完全正确-请参阅答案。
汤姆(Tom)

7
依靠未记录的(可能是无意的)API功能是使悲伤陷入困境的秘诀。
2012年

15
没有人说过依赖未公开的API功能。这个问题是要解决一次性问题,而不是永久支持的持续解决方案。无论如何,说“你做不到”根本是不正确的。
汤姆(Tom)

5
不管哪种方式,现在都已破坏了未公开的API(请参阅其他答案的注释),这很可悲。
dequis 2013年

2
截至2016年8月15日,您可以。参见迈克尔的答案。
maliayas

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/fabproj回购上由发行版15体现的拉取请求,以使用派生new-branch上的tom/fabproj分支。

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


1
无法正常工作。它抱怨该字段issue的值不正确,可能表明您不能再更改已实例化的请求请求。耻辱。
mxcl 2012年

1
您确定您的API调用正确吗?据我所知,这应该仍然有效,并且已被记录。参见developer.github.com/v3/pulls(并搜索“创建请求请求”,然后查看“替代输入”)
汤姆(Tom

14
我今天再次尝试了此方法,可以确认它不再起作用。我将继续探索REST API,以期找到另一种方式。
汤姆(Tom)

1
根据开发人员文档,请求类型应为BT PATCH。另一件事是目前不支持头部/底座修改。参考:developer.github.com/v3/pulls/#update-a-pull-request
Shekhar,2013年

4
嗨,汤姆(Tom)在12年12月13日的评论中提到,这已经(很难过!)不再起作用了……这真是令人遗憾,因为我今天可以很好地利用它,但是a!
pvandenberk

19

从2016年8月15日开始,现在可以通过Github本地实现:

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


它的工作方式是一按编辑标题,然后出现“ base:”按钮,可以进行更改。
AnneTheAgile

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网址,然后查看qa-4.9中的提交。


1

不要丢失与PR关联的所有注释到已删除的分支:

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

例如对于您有PR到branch1,它已被删除。现在,您想合并以掌握和保留有关现有PR的评论:

  1. git checkout主
  2. git pull
  3. git checkout -b branch1
  4. git推
  5. 重新打开您的PR到branch1
  6. 合并到branch1后,合并到master。

这有点古怪,但比破坏大量评论要好得多。


我并不是一开始就这样做,只是为了向其他读者澄清(我俩都> =笨),这是因为如果您控制着已提交给您的PR的回购。我一直在寻找一种方法来更新我提交给不受控制的开源项目的PR。
rtpHarry


-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开发人员文档中找到详细的数据列表

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

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不可编辑。目前,唯一的解决方案似乎是琥珀色


这对当前答案有什么作用?
Lao Lam 2015年

尽管汤姆(Tom)做出了回应,但仍证实了琥珀的回应。
hexaJer

2
这证实了根本不需要此答案。这对当前答案没有任何帮助。汤姆的答案已经有一个通知,它不再适用,并且注释也表明了这一点。
Lao Lam 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.