git 从所有分支中删除文件和历史记录

git remove file and history from all branches

一年多前,我在 gitlab 上创建了一个私人存储库,随着时间的推移,这个存储库已经有了相当大的发展。事后看来,我的一个错误是在存储库中放置了一些大的二进制文件。我不知道 git-lfs 并且回购协议现在已经有了相当大的增长。

所以我认为可能的方法是:

情况是我在存储库中有相当多的活动分支。有没有办法通过最少的命令集在所有分支中以某种方式执行此操作?

当然,另一种方法是存档此存储库,然后在全新的存储库中从头开始并启用 git-lfs 并手动添加所有内容。然而,考虑到分支的数量,这又显得乏味了。

git lfs import 命令会自动执行此操作。它将重写每个分支以删除大文件:

git lfs migrate import --everything

将定位历史中的所有大文件并重写每个分支以将hem设置为LFS对象而不是将大文件直接保存在Git.

如果要识别要导入的大文件:

git lfs migrate import --everything --include='*.dat'

将迁移所有以 .dat 结尾的文件,无论大小。

如果有几个人在您的存储库中工作,我鼓励您plan this migration carefully,因为最终您需要强制推送您重写的分支。