使用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过滤器分支也可以从以前的所有提交中删除这些文件,从而消除了推送其中任何一个文件的需要。
删除文件夹的步骤:
-
使用该命令(需要最高权限,所以按住shirft+鼠标右键,在此处打开PowerShell)
git filter-branch --force --index-filter \ 'git rm -r --cached --ignore-unmatch public/photos' \ --prune-empty --tag-name-filter cat -- --all
注意:代码中的
\
只是为了更好的分割指令,并不是单独的三条指令,输入命令的时候应该一起输入,并且去掉\
输入该指令后会出现很多条rm
指令,如下:
-
筛选器分支完成后,验证没有意外的文件丢失。
-
现在添加.gitignore规则
echo Andorid-Design >> .gitignore git add .gitignore git commit -m "ignore rule for Androi-Design"
-
现在push
git push -f origin branch
现在去Github上刷新以下,发现文件夹的确不见了,并且多了一个.gitignore文件