git - 如何从 pull 请求中删除提交?

标签 git github pull-request

我的 pull 请求中有一个提交。然后我尝试更改我的电子邮件并在这样做之后强制推送更改。现在我在其他人的 pull 请求中有很多提交。我怎样才能删除这些提交?

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

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

最佳答案

可能发生了什么

在您提交当前 pull 请求之前,上游存储库可能已经包含您(使用您的旧/真实电子邮件地址)的一些(至少一个)提交。当您关注 GitHub 的 Changing author info 时,这些提交也已被 filter-branch 脚本重写。配方,以及所有这些提交的后代,无论是否由您,都已被重写。

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

This action is destructive to your repository's history. If you're collaborating on a repository with others, it's considered bad practice to rewrite published history. You should only do this in an emergency.

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

Note: Running this script rewrites history for all repository collaborators. After completing these steps, any person with forks or clones must fetch the rewritten history and rebase any local changes into the rewritten history.

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

当前的 PR 会导致什么

如果您修改后的 pull 请求现在按原样 merge ,那么上游存储库的大部分当前提交将有两次:一次是原始变体,一次是您重写的状态。这会造成非常困惑的存储库历史记录,而且没有任何好处,因为您的旧/真实电子邮件地址仍会保留在历史记录中。

你能(和应该)做什么

要么撤回你的 pull 请求,要么

  1. 找到您的分支最初基于的上游存储库提交。
  2. 将您的分支重新定位到该提交上。这应该可以在没有任何 merge 冲突的情况下实现。
  3. 再次强制推送您的分支,从而再次更新 pull 请求。

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

关于git - 如何从 pull 请求中删除提交?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35539824/

相关文章:

git - 为什么 git-cherry pick 什么都不说?

git - 有没有办法在 GitHub 上进行 git pre-push hooks?或者解决方法?

git request-pull 从本地分支到远程master

Git将不同分支中的旧提交推送到新分支

git - 如何过滤特定目标分支的所有 GitHub pull 请求

Git:如何修改旧 merge (在一系列 merge 中)?

git - 从提交和标记生成变更日志

php - 在 Github 上创建发布 zip 文件,其中不包含标签名称

git - 无法通过 Git Pull 更新我的 Git 本地存储库

github - 强制搜索词的 GitHub 搜索语法是什么?