Github:从拉取请求中删除提交

Github: Remove commit from pull request

昨天我向一个项目提交了我的第一个拉取请求,实际上是这个:

https://github.com/dotnet/corefx/pull/484

我得到的反馈是我需要清理它,因为我在应该有一个的时候将两个提交放入其中。列表中的第一个提交是我从 master 那里获取最新的更改并将它们合并到我的 fork 中,它不应该是我提出的 pull request 的一部分,但似乎我不小心包含了它。

鉴于我之前从未做过其中之一,我该如何修改它以删除不必要的提交?四处阅读我不确定我是否打算重新设置我的分支机构,如果是这样我不确定如何继续。

您可以使用 git rebase -i 删除提交。例如,要删除倒数第二个提交,请使用

$ git rebase -i HEAD~3

然后只需删除您要删除的提交所在的行。然后强推。

$ git push origin <branchname> -f

一般来说,不建议在公开发布后更改分支的历史记录,您应该 "revert" 提交。

但是,如果它被误包含,这是一种可能的选择。

在项目合作者的帮助下,我们设法在不进行 rebase 的情况下更新了 PR,请阅读以下内容:

https://github.com/dotnet/corefx/pull/484#issuecomment-71073511

我不完全理解它,但它似乎涉及更新我的叉子并创建新分支以将 HEAD 指向正确的位置,然后使用 git cherry-pick 来放置我想要的提交在我的分支中的正确位置,然后最后做一个 git push;然后 PR 自动更新到所需状态。