我的 git 存储库中有很多大型资产,我想从存储库中删除所有以前的修订和已删除的文件。但它需要在该目录中保留文件的最新副本。
到目前为止,我只看到了如何清除以前删除的文件而不必保留最近的修订版。
我的 git 存储库中有很多大型资产,我想从存储库中删除所有以前的修订和已删除的文件。但它需要在该目录中保留文件的最新副本。
到目前为止,我只看到了如何清除以前删除的文件而不必保留最近的修订版。
它比那更简单。只需删除根目录下的 .git 文件夹即可。创建一个新的存储库并签入。另外请注意,版本控制的工作是保留所有以前的版本,而不是删除那些。
您正在使用 git 进行文件存储,这不是它的用途。
如果您不关心更改历史记录,只需创建一个tar.gz
包含大型资产的文件(或任何合适的存档/压缩方法),然后从您的 git 存储库中引用它,可能使用脚本或 Makefile 将其复制并解压缩到正确的地方。
至于从历史中完全删除文件(包括当前版本!),有两个步骤:
从所有提交中删除文件:git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch FILENAME_WITH_PATH' --prune-empty --tag-name-filter cat -- --all
清理/清除文件对象的存储库:rm -rf .git/refs/original/; git reflog expire --expire=now --all; git gc --prune=now; git gc --aggressive --prune=now
如果您正在使用远程仓库并且还需要清理它,那push -f
可能还不够;您将需要从头开始重新创建它并将本地(已清理)副本推送到它。