Git删除文件夹的时候出现fatal: pathspec 'Android-Design' did not match any files

使用GitHub删除文件夹的时候出现错误:

>git rm Android-Design
>fatal: pathspec 'Android-Design' did not match any files

再使用–cached也是这样,后来才知道–cached命令是删除远端仓库的文件而不删除本地仓库的文件

>git rm --cached Android-Design
>fatal: pathspec 'Android-Design' did not match any files

因为已经推送到了GitHub的远端仓库,所以应该使用git filter-branch而不是git rm

git rm 将删除文件,因为它们将不再被git跟踪,但是这并不会删除与这些图像对应的旧提交对象.
另一方面,git过滤器分支也可以从以前的所有提交中删除这些文件,从而消除了推送其中任何一个文件的需要。

删除文件夹的步骤:

  1. 使用该命令(需要最高权限,所以按住shirft+鼠标右键,在此处打开PowerShell)

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

    注意:代码中的\只是为了更好的分割指令,并不是单独的三条指令,输入命令的时候应该一起输入,并且去掉\
    输入该指令后会出现很多条rm指令,如下:
    Git删除文件夹的时候出现fatal: pathspec 'Android-Design' did not match any files_第1张图片

  2. 筛选器分支完成后,验证没有意外的文件丢失。

  3. 现在添加.gitignore规则

    echo Andorid-Design >> .gitignore
    git add .gitignore 
    git commit -m "ignore rule for Androi-Design"
    
  4. 现在push

    git push -f origin branch
    

现在去Github上刷新以下,发现文件夹的确不见了,并且多了一个.gitignore文件

在这里插入图片描述

你可能感兴趣的:(Git)