我们的git repo在其历史中有一堆不再需要的大文件.我想使用Pro Git中解释的过滤器分支技术删除它们:
http://git-scm.com/book/en/v2/Git-Internals-Maintenance-and-Data-Recovery
然后我会用git push --force all
它发送到我们的共享仓库,如下所述:
但.Pro Git说,自从我改变历史以来,我需要让每个人都坚持下去.我们只是谨慎使用rebase,通常只是作为合并的替代方式.我可以让每个人重新克隆,但这是最后的手段; 几个开发者都有当地的分支机构,他们希望保留这些变化.
那么:在我们的本地存储库中,每个人都需要做什么才能重新定义到新更改的共享仓库?每个跟踪分支我们必须做一次吗?我们的回购被称为原产地,而主要的分支是主要的,如果你想逐步提供(如果你愿意,我会喜欢它).
Kar*_*ldt 17
关键是每个开发人员master
在完成他们的rebase之后不要丢失他们的原始引用.要做到这一点,让他们在强制推送后执行fetch
(而不是拉动),然后对每个本地分支执行:
git rebase --onto origin/master master <local_branch>
Run Code Online (Sandbox Code Playgroud)
完成后,他们可以签出他们master
并通过以下方式更新它:
git pull --force
Run Code Online (Sandbox Code Playgroud)