一、删除文件
注意以下方法是永久删除文件操作,包括历史记录。数据无价,谨慎操作
操作前应保持远程创库和本地仓库一致
删除一个或多个历史文件
注意这里的
文件地址
是相对于当前项目的根目录,如:lib/xxx/xxx.x
git filter-branch --force --index-filter 'git rm -rf --cached --ignore-unmatch 文件地址1 文件地址2' --prune-empty --tag-name-filter cat -- --all
删除 某个文件夹里的所有文件
这里的
文件夹地址
也是相对于当前项目的根目录
git filter-branch --force --index-filter 'git rm -rf --cached --ignore-unmatch 文件夹地址/*' --prune-empty --tag-name-filter cat -- --all
二、删除缓存记录里
# windows
del .git/refs/original/
# Mac or linux
rm -rf .git/refs/original/
三、处理log
git reflog expire --expire=now --all
四、gc 压缩
git gc --aggressive --prune=now
五、检查是否完整
git fsck --full --unreachable
六、推送到远程仓库
1、这里需要进行强行推送,操作前保持本地仓库和远程仓库保持一致。
2、各个分支都需要推动一遍。
git push origin 本地分支:远程分支 --force