我不知何故在一个分支中得到了一些重复的提交,每个都有相同的更改。它是一个公共(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/