繁体   English   中英

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结尾的文件。

如果您的存储库中有几个人在工作,我建议您仔细计划迁移 ,因为最终您将需要强制推送您重写的分支。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM