无法删除.git
我有一个git仓库Rift
,我试图删除它。在尝试运行rm -rf
时,我得到错误:rm: cannot remove 'Rift/.git/objects/pack': Directory not empty
。
当我导航到目录树的底部时,我发现了一个名为.fuse_hidden
的隐藏文件,后面跟着一串数字和字母,可能是十六进制的。我可以手动删除这个文件,但是一旦我删除了它,就会在它的位置上创建另一个附加了不同的数字和字母串的文件。
我试过rm .git/objects/pack/* && rm -rf .git
,sudo rm -rf .git
,chmod -w .git/objects/path
和killall git
,没有一个成功。
3条答案
按热度按时间nkkqxpd91#
您可以使用
fuser
命令。fuser
是一个命令行实用程序,用于根据特定进程正在访问的文件、目录或套接字来定位进程。它帮助系统用户使用文件或套接字来识别进程。在
.git
目录上使用fuser
命令,查找正在访问该目录的所有进程ID。fuser .git
然后,您可以使用
-k
参数终止进程,然后您应该能够删除目录。fuser -k .git
wqsoz72f2#
我最近发现的另一个解决方案是使用
lsof
命令,使用受影响的文件名作为参数。例如:-t
开关告诉lsof使用“简洁”模式,只返回PID。然后使用-s 9
标志将此PID传递给kill
,这意味着发送信号“SIGKILL”,而不是默认的更礼貌的请求“SIGTERM”或潜在的“SIGHUP”wbgh16ku3#
知道是什么导致了这个特定的错误(gitstatusd),
你能做的
这通常是大多数zsh主题使用的gitstatusd的问题。
关闭终端也可以工作,因为zsh是终端的子进程,gitstatusd是zsh的子进程。