git 从所有分支中删除文件和历史记录
git remove file and history from all branches
一年多前,我在 gitlab 上创建了一个私人存储库,随着时间的推移,这个存储库已经有了相当大的发展。事后看来,我的一个错误是在存储库中放置了一些大的二进制文件。我不知道 git-lfs
并且回购协议现在已经有了相当大的增长。
所以我认为可能的方法是:
- 从整个存储库(以及所有分支)中删除文件及其历史记录。
- 启用
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,因为最终您需要强制推送您重写的分支。
一年多前,我在 gitlab 上创建了一个私人存储库,随着时间的推移,这个存储库已经有了相当大的发展。事后看来,我的一个错误是在存储库中放置了一些大的二进制文件。我不知道 git-lfs
并且回购协议现在已经有了相当大的增长。
所以我认为可能的方法是:
- 从整个存储库(以及所有分支)中删除文件及其历史记录。
- 启用
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,因为最终您需要强制推送您重写的分支。