繁体   English   中英

如何从拉取请求中删除提交?

[英]How can I remove commits from pull request?

我的拉取请求中有一个提交。 然后我尝试更改我的电子邮件并在更改后强制推送更改。 现在我的拉取请求中有很多来自其他人的提交。 如何删除这些提交?

我试过重置,但其他人的提交仍然显示在拉取请求中。

现在我的分支拥有自创建主存储库以来的所有提交。

大概发生了什么

在您提交当前拉取请求之前,上游存储库可能已经包含了一些(至少一个)您的提交(使用您的旧/真实电子邮件地址)。 当您遵循 GitHub 的更改作者信息配方时,这些提交也已被filter-branch脚本重写,并且通过扩展,所有这些提交的后代,无论是否由您,也已被重写。

这就是为什么该页面有一个红色警告框说

此操作会破坏存储库的历史记录。 如果您与其他人在存储库上进行协作,则重写已发布的历史记录被认为是不好的做法。 您应该只在紧急情况下执行此操作。

和一个详细说明的蓝色信息框

注意:运行此脚本会重写所有存储库协作者的历史记录。 完成这些步骤后,任何拥有分叉或克隆的人都必须获取重写的历史并将任何本地更改重新绑定到重写的历史中。

您在该 repo 中的第一次提交可能在其历史的早期,这就是为什么您现在在拉取请求中几乎可以看到整个 repo 的历史。

当前的 PR 会导致什么

您修改后的拉取请求现在是否按原样合并,那么上游存储库的大部分当前提交将进行两次:一次是原始变体,一次是您重写的状态。 这会造成非常混乱的存储库历史记录并且没有任何好处,因为您的旧/真实电子邮件地址仍然在历史记录中。

你可以(并且应该)做什么

要么撤回您的拉取请求,要么

  1. 找到您的分支最初基于的上游存储库的提交。
  2. 将您的分支重新设置为该提交。 这应该是可能的,没有任何合并冲突。
  3. 再次强制推送您的分支,从而再次更新拉取请求。

现在,您的拉取请求应该再次仅引入新贡献的提交,并且可能(如果其他情况良好且需要)被上游存储库所有者接受。

如果您更新分支,PR 将更新。 做你需要做的事情,以使分支看起来像你想要的样子。 您可能必须重置它并强制推送您的更改。

如果是我,我会取消 PR 并制作一个新的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM