有没有办法从本地git工作树中删除所有被忽略的文件?

有没有办法从本地git工作树中删除所有被忽略的文件?,git,Git,昨天我花了几个小时调试git repo的一个问题,这个问题没有被git reset HEAD--hard解决,因为引起问题的文件被.gitignore忽略了。有没有一种方法可以“刷新”或“清理”git repo中所有被忽略的文件,从而只显示git跟踪的文件 我最终通过删除repo并再次从github克隆它来修复我的问题,但在将来,我想立即删除所有潜在问题文件(那些被忽略的文件)。有一个单一的命令解决方案: git ls-files --ignored --exclude-standard | s

昨天我花了几个小时调试git repo的一个问题,这个问题没有被git reset HEAD--hard解决,因为引起问题的文件被
.gitignore
忽略了。有没有一种方法可以“刷新”或“清理”git repo中所有被忽略的文件,从而只显示git跟踪的文件


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

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

git ls-files --ignored --exclude-standard | sed 's/.*/"&"/' | xargs git rm -r --cached
它所做的是:

  • 列出所有被忽略的文件
  • 使用空格处理路径以避免失败
  • 调用git rm-r--cached从索引中删除所有被忽略的文件(而不从本地计算机中删除它们)
git clean-从工作树中删除未跟踪的文件
-d
用于删除目录
-f
强制移除
-n
实际上不删除任何内容,只显示将要执行的操作。
-X
仅删除Git忽略的文件。这可能有助于从头开始重建所有内容,但保留手动创建的文件

如果已将忽略的文件添加到索引/暂存中,则必须在使用上述
clean
命令之前从跟踪索引中删除这些文件

git rm-rf——缓存。

然后添加除.gitignore文件中提到的文件之外的文件


git add.

尝试处理标记的问题,因为它不是重复的。这是关于被忽略的文件,另一个是关于未跟踪的文件。@DaemonPainter我的问题明确地说我已经这样做了,我在寻求另一种方法。如果你想从本地计算机上删除它们,只需删除--cachedHanks!!这个解决方案确实有效,其他答案实际上并没有删除GitHub上的文件。非常简单和不错的解决方案。:-)在我的例子中,由于repo配置为使用composer构建项目的方式,我还需要添加
-x
标志
-df
一个人没有给我任何东西可以移除。@PatrickKenny这是一个很好的例子。。把它包括在回答中这是完全不正确的回答!它讨论的是
未跟踪的
,而不是
忽略的
文件。您也可以使用
x
标志而不是
x
来删除被忽略和未跟踪的文件。不删除被忽略的文件。
git clean -dfX