在筛选器分支后将所有人重新设置为已更改的git历史记录
我们的git回购历史上有一堆不再需要的大文件。我想使用Pro Git中介绍的过滤器分支技术删除它们: 然后我将使用git push--force all将其发送到我们的共享回购,如下所述: 但是。ProGit说我需要让每个人都重新设置基础,因为我正在改变历史。我们很少使用rebase,通常只是作为合并的替代方式。我可以让每个人都重新克隆,但那是最后的手段;一些开发人员有本地分支,他们希望保留更改 那么:在我们的本地存储库中,每个人都需要做些什么来重新建立新更改的共享回购的基础呢?我们每个追踪分支机构都要做一次吗?如果你想一步一步地(如果你愿意的话,我很乐意)提供,我们的回购协议被称为原始协议,主分支是主分支。这里有一个选项在筛选器分支后将所有人重新设置为已更改的git历史记录,git,Git,我们的git回购历史上有一堆不再需要的大文件。我想使用Pro Git中介绍的过滤器分支技术删除它们: 然后我将使用git push--force all将其发送到我们的共享回购,如下所述: 但是。ProGit说我需要让每个人都重新设置基础,因为我正在改变历史。我们很少使用rebase,通常只是作为合并的替代方式。我可以让每个人都重新克隆,但那是最后的手段;一些开发人员有本地分支,他们希望保留更改 那么:在我们的本地存储库中,每个人都需要做些什么来重新建立新更改的共享回购的基础呢?我们每个追踪
- 在名为
的分支上创建重基主控形状(而不是原始的rebased\u master
)李>master
- 您不需要推送该分支,让所有开发人员将其下拉,并将其本地分支重新设置到
。如果他们从重新基址之前的等效提交中重新基址,并且对要删除的文件没有任何更改,那么一切都应该正常李>rebased_master
- 一旦每个人都将其开发分支移动到
,您就可以将原始rebased_-master
和master
删除到rebased_-master
master
注意:我还没有对此进行测试,所以请确保您有一份回购协议副本,以防出现问题 关键是每个开发人员在完成重基之前不要丢失对
master
的原始引用。为此,让他们在强制推送后执行提取
(而不是拉),然后对每个本地分支执行以下操作:
git rebase --onto origin/master master <local_branch>
这听起来不错-我会在它真正工作后的第二天早上接受它!
git pull --force