git:从公共分支中删除重复的提交?

mic*_*ael 5 git rebase

我在某个分支中得到了一些重复提交,每个提交都有相同的更改.它是一个公共分支,由几个用户从几个分支合并.我需要定期将这个分支重新绑定到另一个repo的主分支上,这些重复使它变得笨拙.

有没有办法删除这些并将它们推送到公共仓库,这使得从分支机构工作的其他用户变得复杂?

Eug*_*ine 5

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

如果你真的想清理已经搞砸的分支,那么你应该在本地重新设置它的基础,重新排列提交并在需要时将其强制推送到主线。

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

git checkout yourPublicBranch
git rebase -i HEAD~20
Run Code Online (Sandbox Code Playgroud)

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


ral*_*nja 0

使用git filter-branch重写历史记录。这是 github 上的一个很好的介绍:

http://help.github.com/removing-sensitive-data/