我们的 git 存储库在其历史记录中有一堆不再需要的大文件。我想使用 Pro Git 中解释的过滤器分支技术删除它们:
http://git-scm.com/book/en/v2/Git-Internals-Maintenance-and-Data-Recovery
然后我将使用 git push --force all
将其发送到我们的共享存储库,如下所述:
Update a development team with rewritten Git repo history, removing big files
但是。 Pro Git 说我需要让每个人都 rebase ,因为我正在改变历史。我们只是很少使用 rebase ,通常只是作为一种替代的 merge 方式。我可以让每个人都重新克隆,但这是最后的手段;一些开发人员拥有本地分支机构,其中包含他们希望保留的更改。
那么:每个人在我们的本地存储库中究竟需要做什么才能 rebase 到新更改的共享存储库?我们是否必须为每个跟踪分支执行一次?我们的 repo 被称为 origin,master 分支是 master,如果你想一步一步地给出(如果你愿意的话,我会很高兴)。
最佳答案
关键是每个开发人员在完成 rebase 之前不要丢失对 master
的原始引用。为此,让他们在强制推送之后执行获取
(不是 pull ),然后对于每个本地分支,执行:
git rebase --onto origin/master master <local_branch>
完成后,他们可以 check out 他们的 master
并通过以下方式更新它:
git pull --force
关于git - 在 filter-branch 之后将每个人重新定位到更改的 git 历史记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7561998/