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

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

我怎样才能改变拉请求指向另一个分支(特别是master )?

更新:正如迈克尔注意到, 现在这是可能的 :

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

通过拉取请求的标题单击编辑button以显示基本分支select器。

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


老答案

你不能。 只是做一个新的拉请求。

虽然没有logging,但可以使用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 repo中问题15所包含的拉取请求,以使用tom/fabproj分支上的new-branch分支。

编辑:注意:根据意见,上述只是为了附加一个新的拉动请求到现有的问题

截至08/15/2016,现在可以通过Github本地进行:

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

我可以改变目标分支。 确实,我们不能在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的提交。

而不是丢失与PR关联的所有评论到已删除的分支:

  1. 在本地再次使用与要合并的分支相同的名称和相同的内容创build分支;
  2. 推送该分支来重新创build远程分支; 接着
  3. 重新打开公关到分支。

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

  1. git checkout master
  2. 混帐拉
  3. git checkout -b branch1
  4. 混帐推
  5. 重新打开你的PR到branch1
  6. 当合并到分支1时,合并到主。

这有点不好意思,但要比摧毁很多意见好得多。

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

理论上…

你应该使用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开发人员文档中find详细的数据列表

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

 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字段是不可编辑的。 现在,唯一的解决scheme似乎是琥珀的解决scheme