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,回收空间,执行以下三个命令
4,推送到上游库
git push origin --force --all
我没有验证这个,我回收完空间直接把本地库导出,覆盖上游库(注意修改config文件,把[remote]节下的url修正),这样感觉更放心
注意:
这种活属于管理操作,操作耗时,如果操作失败可能无法挽回,所以,先备份!折腾完用上一段时间觉得没问题才能删备份。
理论上讲,正规发布的版本应该都有独立的拷贝,最新开发版本则在工作区里面,丢失的小版本其实也不是特别重要。
嗯?发过的版本都找不回来?
===================================================================