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

时间:2018-12-27 14:13:33

标签: git gitlab git-lfs

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

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

  • 从整个存储库(以及所有分支中)中删除文件及其历史记录。
  • 启用git-lfs(同样在所有分支上启用)。
  • 添加这些文件(同样在所有分支上)。

这种情况是我在存储库中有很多活动分支。有没有办法用最少的命令在所有分支上做到这一点?

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

1 个答案:

答案 0 :(得分:2)

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

git lfs migrate import --everything

将在历史记录中找到所有大文件,并重写每个分支以将hem设置为LFS对象,而不是将大文件直接保留在Git中。

如果要确定要导入的大文件:

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

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

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