git - 在 filter-branch 之后将每个人重新定位到更改的 git 历史记录

标签 git

我们的 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/

相关文章:

git - 如何将子分支推送到分支?

javascript - 我可以使用 NodeGit 从特定提交中获取加法和减法吗?

git - 如何配置私有(private) Bitbucket 存储库以便我可以在 composer.json 中包含私有(private)包?

git-p4 克隆命令失败

android - 无法在 AndroidStudio 2.1 Beta 中从 GitHub 克隆

git - 如何找到用 git 管理的特定文件的远程完整 url?

git - 是否有图形方式来 git stash/unstash 单个文件?

git - rebase Git merge 提交

git - 当 git 子模块引用的 repo 被删除时会发生什么?

git - 如何在一次操作中执行 git svn fetch + rebase?