扔掉充满二进制文件的git repo上的旧历史

时间:2012-02-08 02:33:37

标签: git

我有一个带有三年PowerBuilder二进制文件的git repo。回购非常庞大(不到10GB),我认为由于git只能为二进制增量做很多事情。

我想把这个回购设备变成一个可管理的大小,而且我愿意抛弃一堆早期历史来做这件事。我只是无法弄清楚如何让git去做。我尝试使用交互式rebase来压缩提交,但它提出了一些我不想处理的冲突。

有没有办法选择提交,并在此之前丢弃所有内容?我意识到它将为后续提交重写SHA-1,这没问题。

2 个答案:

答案 0 :(得分:1)

这是一种(其他)方式:

git fast-export master~5..master | (cd ../newrepo.git && git init . && git fast-import && git checkout)

上面的示例将在范围master~5..master中进行提交并创建新的repo。你也可以使用相同的回购,但上面会更安全。

答案 1 :(得分:0)

您可以将整个节目重新整理为一次提交。

这样的东西
git rebase -i [some early commit]

然后在vim中使用视觉阻止模式来压缩几乎所有这些模式最简单,然后进行fsckgc运行。

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