我有一个只有一个主分支的git存储库。我们的一个贡献者做了一个提交(A)并将一个错误的大文件推送到主分支。由于错误的提交(A),存储库大小已经变得非常高。在他提交之后,我们在同一个分支上工作并做了更多有用的提交。实际内容大小应为200 MB,但由于一次错误提交,整个repo大小已变为2GB。
现在我们计划从存储库中完全删除commit(A)所做的更改。我可以通过在提交(A)之前保留版本来创建分支。但是我不想丢失提交(A)之后的提交,因为那些是项目的主要提交。
有什么方法可以完全删除特定提交及其所做的更改。因此,如果有人克隆了存储库,那么大小将只有200MB。
答案 0 :(得分:0)
删除一些提交正在改变历史记录。这样做之后要注意。您需要所有您的开发人员丢弃他们的工作副本并进行包含新历史记录的新克隆。
要实际删除该提交,您可以使用https://rtyley.github.io/bfg-repo-cleaner/。
从其文档:
Remove all blobs bigger than 1 megabyte :
$ bfg --strip-blobs-bigger-than 1M my-repo.git
答案 1 :(得分:0)
您可以使用git rebase -i
,删除不需要的提交,并强制将结果推送到您的服务器。
同样,删除一些提交正在改变历史记录。这样做之后要注意。您需要所有开发人员丢弃他们的工作副本并进行包含新历史记录的新克隆。