我的文件中有以下条目.gitignore
,我想删除它们。原因是这些文件是 TeX 编译期间创建的临时垃圾文件,我希望能够删除它们。
我怎样才能做到这一点?
答案1
git clean -Xdf
有了资本-X
,git 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'
将所有换行符转换为NUL
s。
xargs -0 -r rm -r
删除文件和目录。-0
做NUL
分隔符。-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