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

nmpmafwu  于 2022-12-10  发布在  Git
关注(0)|答案(2)|浏览(155)

昨天我花了几个小时调试git repo的一个问题,但git reset HEAD --hard没有修复这个问题,因为导致问题的文件被.gitignore忽略了。有没有办法“刷新”或“清理”git repo中所有被忽略的文件,这样就只有git跟踪的文件才存在?
我最终通过删除repo并再次从github克隆它来修复我的问题,但在未来,我希望立即删除所有潜在的问题文件(那些被忽略的文件)。

8gsdolmq

8gsdolmq1#

git clean -dfX

git-clean -从工作树中删除未跟踪的文件
-d用于删除目录
-f强制删除
-n实际上不删除任何内容,只是显示要执行的操作。
-X只移除被Git忽略的文件。这对于从头开始重建所有文件可能很有用,但保留手动创建的文件。
如果已将忽略的文件添加到索引/分段中,则必须在使用上述clean命令之前从跟踪索引中删除这些文件。
git rm -rf --cached .
然后添加除.gitignore文件中包含的文件之外的文件
git add .

w8f9ii69

w8f9ii692#

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

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

它的作用是:

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

相关问题