如何从大型git历史中进行切片,同时保持合并/重设基础的能力

如何从大型git历史中进行切片,同时保持合并/重设基础的能力,git,git-merge,git-rebase,Git,Git Merge,Git Rebase,我目前面临的是一个大型git存储库(我们称之为上游的),其提交可以追溯到10多年前。我不需要它的大部分历史。实际上,将分支从中分割出来,并将其转移到自己的回购协议中,并保持不时合并原始上游分支提交的能力就足够了。在我看来,这将保持回购规模较小 描述:来自 D' - E' upstream/release / A - B - C - D - E upstream/dev 到 并且能够git合并上游/发布或git重新设置myrepo/master的基础 我知道

我目前面临的是一个大型git存储库(我们称之为上游的
),其提交可以追溯到10多年前。我不需要它的大部分历史。实际上,将分支从中分割出来,并将其转移到自己的回购协议中,并保持不时合并原始
上游
分支提交的能力就足够了。在我看来,这将保持回购规模较小

描述:来自

          D' - E' upstream/release
         /
A - B - C - D - E upstream/dev

并且能够
git合并上游/发布
git重新设置myrepo/master的基础

我知道
myrepo/release
需要一些人工初始化。我已经尝试了很多git checkout--orphan--
git rebase--on
等,但没有找到解决方案。也许有人能帮你想出一个好主意

谢谢,
Jens

我想到了以下几点:

git checkout --orphan my_release D'
git add .
git commit -m "Started new history"
然后对整个
上游/发布
分支重新定基:

git checkout upstream/release
git rebase --onto my_release D' upstream/release
合并:

git checkout my_release
git merge upstream/release
这会产生新的提交ID,但将来可能会通过重定基来进行更新

这帮了大忙

git checkout my_release
git merge upstream/release