清除git本地缓存

160

我有一个Webstorm项目要提交,但在按Git Windows GUI中的提交按钮之前,我想起我不想提交.idea文件夹内容。

所以我使用了自动生成特定IDE的.gitignore文件的网站,并将其添加到了我的.gitignore文件中。

所有明确忽略的.idea文件仍然出现在提交中,尽管我已经删除并重新添加了相关文件。

我还将gitignore文件单独提交而没有其他文件,并重新粘贴了内容,但它仍然没有忽略.idea文件。

如何告诉Git刷新或清除其缓存?
我尝试进入相关目录,并输入

git clean -n

但是没有文件显示。

7个回答

246

所有明确被忽略的 .idea 文件仍会显示在提交列表中

您需要将它们从暂存区中移除

git rm --cached .idea
现在您需要提交这些变更,并且从此忽略它们。
一旦 Git 开始跟踪更改,即使它们后来被添加到 .gitignore 文件中,也不会停止跟踪它们。
您必须明确地将它们移除,然后手动提交删除操作,以完全忽略它们。

enter image description here

enter image description here


5
虽然我试图忽略的文件从未被提交,但是这个错误信息告诉我,“致命错误:路径规范‘.idea’没有匹配到任何文件”。 - jozenbasin
当你输入 git status 时,你是否看到它们?如果你标记了自动添加文件的复选框,WebStorm 可能已经为你添加了它们。 - CodeWizard
2
我不知道,但似乎你给我的命令起作用了,尽管它返回了一个致命错误... 这些文件不再显示提交。 - jozenbasin
您可能需要考虑添加 -r 参数,以实现递归删除。 - Vishrant
对我来说,我必须像这样包括-rgit rm --cached -r .idea - Barungi Stephen
对我来说,git rm -rf --cached . - Alessandro_Russo

189

当您认为自己的Git出了问题时,您可以使用此命令使一切保持最新。

git rm -r --cached .
git add .
git commit -am 'git cache cleared'
git push

还原上一个提交,请使用以下命令:

git reset HEAD^ --hard

9
如果您不想将更改推送到远程,请勿使用git push。但如果您已经这样做了,请转到Android Studio底部的版本控制选项卡,右键单击以前的提交,并选择“将当前分支重置为此处”。 - Swapnil Kadam
重置部分最多令人困惑。但我一直做到了“git push”,并且没有问题。 - Seun S. Lawal
这个回答需要警告。git rm -r --cached .后面跟着的git add .会先重置您的项目所有文件,而警告在于git add .,因为您可能正在添加尚未准备好提交和推送的文件。执行git reset .然后运行git status检查所有文件是否已准备好进行添加、提交和推送。 - McRui

31
如果你对git ignore做了任何更改,那么你还需要清除你的git缓存。
git rm -r --cached . 
git add . 
git commit -m 'git cache cleared'
git push

如果想要删除特定的文件夹或文件,那么
git rm  --cached filepath/foldername

9

在 git-ignore 文件中做出更改后,请运行以下命令。此命令将删除所有文件缓存(不是文件或更改):

git rm -r --cached .

执行此命令后,请提交文件。

要从缓存中删除单个文件或文件夹,请使用此命令:

git rm --cached filepath/foldername


7
git rm --cached *.FileExtension

这个设置将忽略所有该扩展名的文件


3

如何删除缓存的 .idea/ 目录。 例如:git rm -r --cached .idea


0
你可以尝试以下内容:
$ git clean -d -n

之后它会显示你想要删除的内容,如果那是你想要做的事情的话。
git clean -f -d

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接