git 删除历史commit的文件

一、删除文件

注意以下方法是永久删除文件操作,包括历史记录。数据无价,谨慎操作
操作前应保持远程创库和本地仓库一致

删除一个或多个历史文件

注意这里的文件地址是相对于当前项目的根目录,如: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
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容