7

我在 git 存储库中有一个大型二进制文件,在几次提交中已更改。这些提交还包括对其他文件的更改。我希望存储库中只有最新版本的二进制文件,但希望保留在这些提交中更改的其他文件的历史记录。

所有有问题的提交都已经被推送到 github,并被团队的其他成员从他们那里拉出来。

我怎样才能做到这一点?

编辑:我不相信这是另一个引用问题的重复。如下面评论中所述,我已经查看了该问题,但想删除文件的每个版本,除了最新版本。这个标准在另一个问题的答案中没有提到。

4

2 回答 2

6

最简单的方法是使用BFG Repo-Cleaner,这是一种更快、更简单的替代方案,git-filter-branch专为从 Git 存储库中删除大文件而设计。

您应该仔细按照使用说明进行操作,但主要步骤就是这样 - 下载Java jar(需要 Java 7 或更高版本)并运行以下命令:

$ java -jar bfg.jar  --strip-blobs-bigger-than 100MB  my-repo.git

任何大小超过 100MB 的 blob 都将从您的存储库历史记录中完全删除-除非它是您最新提交的文件树中存在的版本,因此您的最新版本将根据您的需要保持不变。

BFG也比git-filter-branch.

全面披露:我是 BFG Repo-Cleaner 的作者。

于 2013-04-25T18:52:05.593 回答
2

与其尝试过滤除最新版本之外的所有版本,不如从您的回购历史记录中删除文件并重新添加最新版本:

考虑跟踪此文件。Git 不适用于大型二进制 blob。

于 2013-04-25T17:54:50.457 回答