删除Git Repo中目录中的所有以前版本的文件

时间:2013-11-01 15:09:42

标签: git

我的git repo中有很多大型资产,我想从repo中删除所有以前版本和已删除的文件。但它需要保留该目录中最新的文件副本。

到目前为止,我只看到了如何擦除以前删除的文件而没有必要保留最近的版本。

2 个答案:

答案 0 :(得分:1)

您正在使用git进行文件存储,这不是它的目的。

如果您不关心更改历史记录,只需创建一个包含大型资产的tar.gz文件(或任何合适的存档/压缩方法),并从您的git仓库引用它,可能使用脚本或Makefile复制它并将其解压缩到正确的位置。

至于完全从历史记录中删除文件(包括当前版本!),有两个步骤:

  1. 从所有提交中删除该文件:git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch FILENAME_WITH_PATH' --prune-empty --tag-name-filter cat -- --all

  2. 清理/清除文件对象的存储库:rm -rf .git/refs/original/; git reflog expire --expire=now --all; git gc --prune=now; git gc --aggressive --prune=now

  3. 如果您正在使用远程仓库并且需要清理它,push -f可能还不够;您需要从头开始重新创建它并将本地(已清理)副本推送到它。

答案 1 :(得分:0)

它比那更简单。只需删除根目录下的 .git 文件夹即可。创建一个新的存储库并签入。另外请注意,版本控制的工作是保留所有以前的版本,而不是删除它们。