0

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

到目前为止,我只看到了如何清除以前删除的文件而不必保留最近的修订版。

4

2 回答 2

1

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

于 2021-06-16T16:48:34.340 回答
0

您正在使用 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

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

于 2013-11-01T15:33:11.823 回答