有没有办法从git仓库中删除所有被忽略的文件?

Pat*_*nny 22 git

昨天我花了几个小时调试我的git repo的问题,git reset HEAD --hard因为导致问题的文件被忽略了.gitignore.有没有办法"刷新"或"清理"所有被忽略的文件的git仓库,以便只有git跟踪的文件存在?

我终于通过删除repo并再次从github克隆它来解决我的问题,但是在将来,我想立即删除所有可能存在问题的文件(那些被忽略的文件).

Sam*_*ert 43

git clean -dfX
Run Code Online (Sandbox Code Playgroud)

git-clean - 从工作树中删除未跟踪的文件
-d
-f删除强制删除目录
-n实际上不删除任何内容,只显示将要执行的操作.
-X仅删除Git忽略的文件.这可能有助于从头开始重建所有内容,但保留手动创建的文件.

  • 这是完全错误的答案!它谈论的是“未跟踪”文件,而不是“被忽略”文件。 (3认同)
  • 您还可以使用 `x` 标志代替 `X` 来删除被忽略的 * 和 * 未跟踪的文件。 (3认同)
  • 不删除被忽略的文件。 (2认同)

小智 8

有一个命令解决方案:

git ls-files --ignored --exclude-standard | sed 's/.*/"&"/' | xargs git rm -r --cached
Run Code Online (Sandbox Code Playgroud)

它的作用是:

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

  • 对于 2022 年使用此功能的任何人,您将需要带有“ls-files”的“-c”标志:“git ls-files -c --ignored --exclude-standard | sed 's/.*/"&"/' | sed 's/.*/"&"/' | xargs git rm -r --cached` (12认同)