如何在合并前清理拉取请求?

How to clean a pull-request before merging?

我有一个关于 GitHub 上的拉取请求机制的问题。

Bob 在其分支中提交了一些更改:

* Added feature foo 
* Added feature bar 
* Removed latency in baz

然后他创建了一个 PR。 Alice等人拒绝了PR,要求改。 Bob 添加新提交

* !fixup Added feature foo 
* !fixup Added feature bar 
* cosmetic change

他们又不高兴了,他们要求更多的改变,所以 Bob 很生气

* Again some change, please accept my PR 
* Damned, I forgot this...

最后我们得到了每个人都同意的东西,但是我们有嘈杂的提交。所以剩下三个选项:

  1. 我们接受 PR,但所有这些提交变得丑陋
  2. Bob rebase -ipush -f --force-with-lease(但是 PR 会怎样?)
  3. Bob 关闭了 PR,rebase -i 在一个新的分支上然后创建了一个新的 PR。

最好的选择是什么?

P.S。 squash 不是一个选项,因为我们想要 rebase 拉取请求并保留具有 foobar 和延迟问题修复的最初三个提交。

第二个选项看起来不错。拉取请求将使用来自 rebase -i 操作的新提交进行更新,替换之前的提交。这些新的提交将出现在对拉取请求的最后评论之后,这让审阅者知道有新的提交要审阅(至少检查它与以前的内容相同)。