删除 .gitignore 中提到的任何文件

删除 .gitignore 中提到的任何文件

我的文件中有以下条目.gitignore,我想删除它们。原因是这些文件是 TeX 编译期间创建的临时垃圾文件,我希望能够删除它们。

我怎样才能做到这一点?

答案1

git clean -Xdf

有了资本-Xgit clean 仅有的删除匹配的文件.gitignore

使用-d,git clean还会删除匹配的整个目录.gitignore

使用-f,git clean实际上会删除内容而不是警告您。不过要小心。可能还有其他原因(例如个人direnv配置).gitignored,因此请确保在运行该命令之前始终了解该命令将执行的操作。

特别感谢@Kusalananda 的分享git clean


作为替代方案,如果您有一个包含符号链接目录的依赖项文件夹,并且您不想git clean递归删除所有内容里面这些目录,您可以使用这个更长的形式:

git ls-files --others --ignored --exclude-standard --directory | head -c -1 | tr '\n' '\0' | xargs -0 -r rm -r

git ls-files使用这些选项列出与 相同的目录git clean -Xdn,但更具机器可读性。

head -c -1修剪尾随换行字节。

tr '\n' '\0'将所有换行符转换为NULs。

xargs -0 -r rm -r删除文件和目录。-0NUL分隔符。-r导致它跳过空输入(警告:这是一个不可移植的 GNU 扩展)。

答案2

git clean -X -f -n

git clean -X将删除与.gitignore.最后-n导致它实际上并没有删除文件,只是进行试运行,报告文件已被删除。

添加-d以同时删除被忽略的目录。

如果没有-X,它会删除未跟踪的文件(但不会删除被忽略的文件)。

git clean --help

答案3

在您的情况下,如果您的文件条目.gitignore不是以以下开头,!那么这一行应该适合您:

while read -r entry;do rm -rf ${entry}; done < .gitignore

相关内容