在一个充满二进制文件的git仓库中丢弃旧的历史记录

5
我有一个包含三年PowerBuilder二进制文件的git仓库。该仓库非常庞大(接近10GB),我认为这是由于git在处理二进制差异时存在局限性所致。
我希望将此仓库压缩到可管理的大小,并愿意放弃早期历史记录以实现此目的。但我不知道如何让git完成这个任务。我尝试使用交互式变基来压缩提交,但出现了一堆我不想处理的冲突。
有没有一种方法可以选择一个提交,并且仅保留该提交之后的内容?我知道这将重写后续提交的SHA-1,但这并不是问题。

你绝对可以使用rebase和squashes来压缩之前的所有提交。如果你有很多提交,我仍在考虑一种优雅/快速的方式来完成这个过程。 - TheBuzzSaw
2个回答

1
这是另一种方法:
git fast-export master~5..master | (cd ../newrepo.git && git init . && git fast-import && git checkout)

以上示例将获取 master~5..master 范围内的提交并创建一个新的存储库。您也可以使用相同的存储库,但上述操作会更安全。

0

你可以将整个提交历史压缩成一个单一的提交。

就像这样

git rebase -i [some early commit]

然后在vim中使用可视块模式来压缩几乎所有的内容是最简单的,接着运行fsckgc

或者,您可以使用git filter-branch完全从树中删除提交。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接