Git如何彻底删除文件或文件夹(包括历史记录)

Git如何彻底删除文件或文件夹(包括历史记录)

有时某个文件文件过大或私密文件误传,需要彻底删除

  1. 首先确定你需要删除的文件名或文件夹名

    比如我需要删除文件"ror.xml"(需将文件名改成你的)

    git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch ror.xml' --prune-empty --tag-name-filter cat -- --all

    比如我需要删除文件夹"config/"  注意 -r(需将文件夹名改成你的)

    git filter-branch --force --index-filter 'git rm --cached -r --ignore-unmatch config/' --prune-empty --tag-name-filter cat -- --all

    也可能是下面这样的

    如删除media文件夹下所有以2018开头的mp4文件

    git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch media/2018*.mp4' --prune-empty --tag-name-filter cat -- --all

    如果操作后提示有"Ref 'refs/heads/master' was rewritten"则执行成功

  2. 强制推送

    git push -u origin master -f

  3. 删除回收

    rm -rf .git/refs/original/
    git reflog expire --expire=now --all
    git gc --prune=now
    git gc --aggressive --prune=now

标签: git

发表评论: