海神与明月 https://blog.satri.cn/ 全站:3.19 万字
技术

有程序正在占用文件,导致 Git 无法删除它们

2026-09-14 字数:367
总结:在 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 进程在占用。

本文著作权归作者 [ 海神与明月 ]享有,未经作者书面授权,禁止以任何目的、任何形式转载,本声明具有法律效力,作者保留法律范围内的一切权利。