我在 git 存储库中有一个大型二进制文件,在几次提交中已更改。这些提交还包括对其他文件的更改。我希望存储库中只有最新版本的二进制文件,但希望保留在这些提交中更改的其他文件的历史记录。
所有有问题的提交都已经被推送到 github,并被团队的其他成员从他们那里拉出来。
我怎样才能做到这一点?
编辑:我不相信这是另一个引用问题的重复。如下面评论中所述,我已经查看了该问题,但想删除文件的每个版本,除了最新版本。这个标准在另一个问题的答案中没有提到。
我在 git 存储库中有一个大型二进制文件,在几次提交中已更改。这些提交还包括对其他文件的更改。我希望存储库中只有最新版本的二进制文件,但希望保留在这些提交中更改的其他文件的历史记录。
所有有问题的提交都已经被推送到 github,并被团队的其他成员从他们那里拉出来。
我怎样才能做到这一点?
编辑:我不相信这是另一个引用问题的重复。如下面评论中所述,我已经查看了该问题,但想删除文件的每个版本,除了最新版本。这个标准在另一个问题的答案中没有提到。
最简单的方法是使用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 的作者。
与其尝试过滤除最新版本之外的所有版本,不如从您的回购历史记录中删除文件并重新添加最新版本:
考虑不跟踪此文件。Git 不适用于大型二进制 blob。