我提交并推送了一些目录到 github。之后,我更改了.gitignore
文件,添加了一个应忽略的目录。一切正常,但(现在已忽略)目录保留在 github 上。
如何从 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 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 的关于存储库的反馈;文件仍在工作目录中。
我这样做:
git rm --cached `git ls-files -i --exclude-from=.gitignore`
git commit -m 'Removed all files that are in the .gitignore'
git push origin master
这将删除 git 忽略中的所有文件 / 文件夹,省去了手动选择每个文件 / 文件夹的麻烦
这似乎已停止为我工作,我现在这样做:
git rm -r --cached .
git add .
git commit -m 'Removed all files that are in the .gitignore'
git push origin master
按照我在这里的答案: 如何从 git 存储库中删除目录?
删除目录的步骤
git rm -r --cached FolderName
git commit -m "Removed folder from repository"
git push origin master
在下次提交中忽略该文件夹的步骤
要在下次提交时忽略该文件夹,请在根目录.gitignore 中创建一个文件,并将该文件夹名称放入其中。你可以放任意多
.gitignore文件将如下所示
/FolderName