如何修改GitHub的拉取请求?

235

我向一个项目发起了一个拉取请求。维护者已经决定接受它,但告诉我需要修改一些内容。

我该怎么做?是否应该保持提交哈希值不变,如何做到这一点?

5个回答

238

只需在请求的分支上推送更多提交。然后,拉取请求会将其捕获。

示例:

如果您想将b合并到主分支

  1. 您将c1、c2、c3推送到b
  2. 然后您为b创建一个新的请求
  3. 它将被审查,您需要更多提交
  4. 您将c11、c21、c31推到b
  5. 此时,拉取请求会显示所有6个提交

8
除了该拉取请求的作者外,其他人是否可以添加提交内容到该拉取请求中? - skywinder
6
每个推送到特定分支的人 - Daij-Djan
4
很多时候,如果有人发起了Pull Request,他会推送到他自己的代码库分支。那么,没有该分支的提交权限的人是否可以向这个PR添加提交记录呢? - Maciej Łoziński
2
@skywinder 也许你可以查看这个问题:是否可以在拉取请求(Github)中更改其他人的代码? - Maciej Łoziński
@MaciekŁoziński,答案也只有在“您可以推送到特定分支”的情况下才成立 :) - Daij-Djan

50

我在一个拉取请求中只有一个提交,使用git commit --amend进行更新。然后我使用git push -f进行强制推送,以便我的修改后的提交替换了原始提交。拉取请求自动捡起了新提交。(实际上显示了两个提交,但当我重新加载页面时,旧的提交已经消失了。)

因此,虽然强制推送通常不推荐使用,但在拉取请求中可能会有用。它不被推荐是因为如果有人基于您的提交进行提交,那么他们将不得不在您的更改后进行变基。但由于没有人应该在待审查的拉取请求上进行工作,因此在这种情况下应该是相当安全的。


11
如果您继续更改并继续向同一分支推送,精简的提交将被添加到同一拉取请求中(除非您的拉取请求已合并)。这可能会使历史记录非常混乱。
另一种解决方案和我使用的技术如下:
1.从仓库(上游)和分支(develop)中创建一个新分支(fixes),以便您发送拉取请求:
git branch fixes upstream/develop 2.直接向此新创建的分支添加您精简的提交。
git commit -m“您的消息”
3.将此分支推送到您自己的派生远程(可能命名为origin)。
4.比较并发送一个带有干净提交历史记录的新拉取请求。
5.在拉取请求合并后删除您的分支是个好主意。
6.您可以评论并关闭早期的拉取请求。

1

您还可以使用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不可编辑。 - hexaJer

0

将更改应用于已创建PR的分支。例如,如果您的分支名称为newFeature,并且您已经创建了将newFeature合并到develop分支的PR,请在newFeature分支上应用建议的更改,并进行尽可能多的提交。完成修复建议的审核更改后,请允许审核人重新审查。一旦获得批准,您就可以合并您的PR。

如果需要git的一般帮助,您可以使用SourceTree或其他GUI工具。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接