205

我已经打开了一个项目的拉取请求。维护者决定接受它,但告诉我修改一些内容。

我该怎么做?我是否应该保持提交哈希不变,我该怎么做?

4

5 回答 5

219

只需将更多提交推送到请求所针对的分支。然后,拉取请求将获取它。

例子:

如果你想让 b 合并到 master

  1. 你把 c1,c2,c3 推到 b
  2. 然后你对 b 提出新的请求
  3. 它得到了审查,你需要更多的提交
  4. 你将 c11,c21,c31 推到 b
  5. 拉取请求现在显示所有 6 个六个提交
于 2013-05-25T09:34:56.470 回答
44

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

因此,虽然通常不建议强制推送,但它对于拉取请求很有用。不建议这样做,因为如果有人在您的基础上提交,那么他们将不得不在您更改后进行 rebase。但是由于没有人应该将他们的工作基于审查不足的拉取请求,所以在这种情况下应该是相当安全的。

于 2015-09-28T08:28:02.027 回答
11

如果您继续进行更改并继续推送到同一个分支,则精炼的提交将被添加到同一个拉取请求中(除非您的拉取请求已被合并)。这可能会使历史变得非常混乱。

我使用的替代解决方案和技术如下:

  1. 通过执行以下操作从存储库(上游)和分支(开发)创建一个新分支(修复),您打算将拉取请求发送到该分支:

    git 分支修复上游/开发

  2. 将您的细化提交直接添加到这个新创建的分支。

    git commit -m "你的信息"

  3. 将此分支推送到您自己的分叉远程(可以命名为 origin)。

  4. 比较并发送具有干净提交历史的新拉取请求。
  5. 此外,在合并拉取请求后删除您的分支是个好主意。
  6. 您可以评论并关闭您之前的拉取请求。
于 2014-04-29T18:08:36.887 回答
1

您也可以使用github api

卷曲的例子

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
于 2014-03-27T11:04:23.277 回答
0

将您的更改应用到创建 PR 的现有分支之上。例如,如果您的分支名称是newFeature并且您已创建 PR 以合并newFeaturedevelop分支中。将建议的更改应用到 newFeature 分支上,并提交尽可能多的提交。完成修复建议的审核更改后。允许审阅者重新审阅它。一旦获得批准,您应该能够合并您的 PR。

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

于 2021-04-09T11:45:23.850 回答