有没有办法从Git回购中删除所有被忽略的文件?


Is there a way to remove all ignored files from a git repo?

本问题已经有最佳答案,请猛点这里访问。

昨天,我花了几个小时调试了我的Git repo的一个问题,这个问题不是由git reset HEAD --hard解决的,因为导致该问题的文件被.gitignore忽略了。是否有一种方法可以"刷新"或"清除"所有被忽略的文件的git repo,以便只存在git跟踪的文件?

我最终通过删除repo并再次从github克隆来解决了我的问题,但将来,我希望立即删除所有潜在的问题文件(那些被忽略的文件)。


1
git clean -dfX

git clean-从工作树中删除未跟踪的文件用于删除目录的-d-f强行拆除-n实际上没有删除任何内容,只是显示将要做什么。-X只删除git忽略的文件。这对于从头开始重建所有内容可能很有用,但保留手动创建的文件。


有一个单一的命令解决方案:

1
git ls-files --ignored --exclude-standard | sed 's/.*/"&"/' | xargs git rm -r --cached

它的作用是:

  • 列出所有忽略的文件
  • 处理带有空格的路径以避免失败
  • 调用git rm-r--cached从索引中删除所有被忽略的文件(而不从本地计算机中删除它们)