如何将分支从一个仓库迁移到具有不同历史的另一个仓库?

时间:2019-10-15 00:41:40

标签: git github bfg-repo-cleaner

现在,我正在尝试通过删除与源代码管理中长期删除的二进制文件相关联的git对象来减少膨胀的仓库。我正在使用BFG回购清理器,该清理器成功地精简了回购协议,并保持了当前提交不变,但我正在努力协调如何迁移到精简的回购协议。

就上下文而言,所有开发人员都不是主仓库的分支,只能通过PR合并更改。对于迁移,我正在考虑让所有人从上游获取最新更改,然后执行BFG工作,强制执行,然后让所有人重新进行分叉和重新克隆。

这非常简单,但是事情很棘手,因为每个人都在自己的仓库中拥有历史记录,而历史记录将被彻底重写。我正在苦苦挣扎的是如何让开发人员将功能分支从旧的分支和克隆迁移到新的分支和克隆。我尝试过的所有事情(即将旧仓库添加为远程仓库并进行拉动)都带来了比我想要的更多的历史记录,或者根本没有历史记录(例如,摘樱桃);理想情况下,我们只会带来与分支及其提交中已更改的历史一样多的历史。

这里有最佳实践吗?

1 个答案:

答案 0 :(得分:1)

  

将旧仓库添加为远程仓库并拉动

几乎:添加旧的仓库并获取

然后您可以执行git rebase --onto,该操作可让您将历史记录的部分重播到新的仓库中

git checkout master # or any other commit from  which you want the feature branch to start
git checkout -b feature_branch old_repo/feature_branch # re-create the feature-branch
git rebase --onto master first_commit_fb~1 feature_branch

first_commit_fb是旧存储库中该功能分支的第一次提交。