Git clean无法清除不需要的文件夹。

9
我有一个.NET解决方案,切换回主分支后会留下一个项目文件夹。我想清理这个文件夹(里面只有bin和obj文件夹,以及一些旧的dll文件),所以我尝试了git clean -f -d命令,但没有起作用。
我使用git ls-tree test/flat -r --name-only命令检查了哪些文件被git跟踪,确实发现要清理的项目文件夹没有列出来。
那么我该怎么做才能让git清理工作文件夹,使其内容只包含主分支中的内容呢?
注意:这个不需要的项目文件夹也没有被忽略。

3
要清理被忽略的文件(构建输出),请使用 -x 选项。 - Lasse V. Karlsen
2个回答

16
如果文件夹中存在被忽略的文件,git clean 将不会删除该文件夹。
你可能需要研究以下选项,可能需要同时使用这三个选项:
  • -f:强制执行 git clean 删除文件
  • -d:除了未跟踪的文件外,还删除未跟踪的目录
  • -x:删除被 Git 忽略的文件
这个命令:
git clean -fdx

应该删除所有未跟踪的文件和目录。

注意!我之所以这么说是因为许多人不阅读警告标签,如果你这样做,那些文件就无法恢复了。它们已经消失了。你需要有磁盘或文件级别的备份,而不是使用git来恢复那些文件。

使用“git clean -ifdx”以交互方式删除文件和目录。这样可以避免意外删除文件。Git会显示将要被删除的文件列表,并要求你从选项中选择。

enter image description here


显然,git存在一个bug:如果一个文件是“套接字文件”,那么使用fdx和其他任何选项都会被忽略。 - Hi-Angel

1

git clean默认情况下不会删除被Git忽略的文件。

添加-x标志以删除被忽略的文件,或添加-X标志以仅删除被忽略的文件和目录。

git clean -fdx
git clean -fdX

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