git:从公共(public)分支中删除重复提交?

标签 git rebase

我不知何故在一个分支中得到了一些重复的提交,每个都有相同的更改。它是一个公共(public)分支,由多个用户从多个分支 merge 而来。我需要定期将此分支 rebase 到另一个存储库的主分支上,这些重复项使它变得笨拙。

有没有办法删除这些并将它们推送到公共(public)存储库,而不会使分支机构的其他用户变得复杂?

最佳答案

在这种情况下,恕我直言,filter-branch 不是必需的,正如 Jefromi 提到的,如果不让其他人的生活变得有点复杂,这是不可能的。 Git 的第一条规则——不要重写已发布的历史。

如果你真的想清理已经搞砸的分支,那么你应该在本地对其进行 rebase ,重新安排提交,并在需要时将其强制推送到主线。

为了做到这一点(假设该分支在本地 checkout ,并且您开始获取这些重复项之后的最后一个已知良好状态是 20 次提交前)

git checkout yourPublicBranch
git rebase -i HEAD~20

这将启动编辑器,您可以在其中管理提交。然后你必须保存文件并退出,rebase 才能开始工作。这可能会导致冲突。

关于git:从公共(public)分支中删除重复提交?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5795427/

相关文章:

git - 我如何 "reopen"一个 git 提交?

java - 无法创建 GitHub 存储库 无法创建存储库 : Name of Project 301 Moved Permanently in Android Studio

git - 使用开放的 LDAP 配置 GitLab

Git - 文件标志冲突

git - 用于 git 的开源基于 Web 的代码和变更集查看器

git - 使用 github 批量更改 git 上的电子邮件地址

git - 可以永远使用同一个本地分支吗

git - 替代 git rebase

git - 当 Git rebase --continue 真的被空提交阻塞时如何继续

Git 在上游 master 上重新设置我的 fork 分支