我提交了一些目录并将其推送到 github。之后,我更改了.gitignore文件,添加了一个应该被忽略的目录。一切正常,但(现在被忽略的)目录保留在 github 上。
.gitignore
如何从 github 和存储库历史记录中删除该目录?
您.gitignore文件中的规则仅适用于未跟踪的文件。由于该目录下的文件已经提交到您的存储库中,因此您必须取消暂存它们,创建提交并将其推送到 GitHub:
git rm -r --cached some-directory git commit -m 'Remove the now ignored directory "some-directory"' git push origin master
如果不重写存储库的历史记录,则无法从历史记录中删除文件 - 如果其他人正在使用您的存储库,或者您正在多台计算机上使用它,则不应这样做。如果您仍然想这样做,您可以使用git filter-branch重写历史 -这里有一个有用的指南。
git filter-branch
此外,请注意输出git rm -r --cached some-directory将类似于:
git rm -r --cached some-directory
rm 'some-directory/product/cache/1/small_image/130x130/small_image.jpg' rm 'some-directory/product/cache/1/small_image/135x/small_image.jpg' rm 'some-directory/.htaccess' rm 'some-directory/logo.jpg'
这rm是来自 git 关于存储库的反馈;这些文件仍在工作目录中。
rm