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

二、删除缓存记录里

  1.  
    # windows
  2.  
    del .git/refs/original/
  3.  
     
  4.  
    # Mac or linux
  5.  
    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

posted on 2023-08-11 17:57  混元真人  阅读(165)  评论(0)    收藏  举报