GIT清理不要的文件和历史

GIT

有文件和目录不需要了,想把内容和历史记录全部清理掉,这样做:

1,进入版本库目录

2,删除文件和历史,执行命令

git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch 文件名' --prune-empty --tag-name-filter cat -- --all

git filter-branch --force --index-filter 'git rm --cached -r --ignore-unmatch 目录名' --prune-empty --tag-name-filter cat -- --all

区别就是删除目录的时候多了“-r”

执行完毕本地库里面的记录和工作副本都会被删除(被忽略的文件和目录会残留)

再查看历史会发现相关的日志都没有了

3,回收空间,执行以下三个命令

git for-each-ref --format='delete %(refname)' refs/original | git update-ref --stdin

git reflog expire --expire=now --all

git gc --prune=now

执行完会发现.git目录确实小了很多

4,推送到上游库

git push origin --force --all

我没有验证这个,我回收完空间直接把本地库导出,覆盖上游库(注意修改config文件,把[remote]节下的url修正),这样感觉更放心

注意:

这种活属于管理操作,操作耗时,如果操作失败可能无法挽回,所以,先备份!折腾完用上一段时间觉得没问题才能删备份。

理论上讲,正规发布的版本应该都有独立的拷贝,最新开发版本则在工作区里面,丢失的小版本其实也不是特别重要。

嗯?发过的版本都找不回来?

===================================================================

原文地址:https://www.cnblogs.com/shadowpigg/p/13969251.html