总结:在 Windows 上,文件被其他进程占用,Git 无法删除;用 resmon
找到占用句柄并结束进程后,再执行 git clean 即可。
问题现象
执行清理命令:
bash
git clean -f -q -- php.err php.out
出现报错:
text
warning: failed to remove php.err: Invalid argument
warning: failed to remove php.out: Invalid argument
文件删不掉,但 Git 给出的错误信息又比较抽象,不一定是路径参数问题。
原因
这是 Windows 文件锁定机制导致的。
在 Linux / macOS 上,一个文件即使被进程打开,通常也允许删除。但在 Windows 上,只要文件正在被某个进程使用,其他程序就很可能无法删除它。
解决方法
方法一:关闭可能占用文件的程序
先关闭所有可能打开 php.err 和 php.out 的编辑器、IDE、终端窗口。
然后重新执行:
bash
git clean -f -q -- php.err php.out
如果只是编辑器占用,这一步通常就能解决。
方法二:用 resmon 查找并结束占用进程(推荐)
这是实测很好用的方法。
按下 Win + R,输入:
text
resmon
回车打开“资源监视器”。
切换到 “CPU” 选项卡。
展开 “关联的句柄” 区域。
在搜索框中输入:
text
php.err
在搜索结果中找到正在占用该文件的进程。
右键该进程,选择 “结束进程”。
再搜索:
text
php.out
如果也有占用进程,同样右键结束。
回到终端,重新执行清理命令:
bash
git clean -f -q -- php.err php.out
通常这时文件就可以被正常删除了。
如果搜索文件名找不到,可以尝试搜索完整路径,或者只搜索 php 看看是哪个 PHP 进程在占用。