[英]Cannot remove .git: Directory not empty
.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
,但都沒有成功。
您可以使用fuser
命令。
fuser
是一個命令行實用程序,旨在根據特定進程正在訪問的文件、目錄或套接字來定位進程。 它幫助系統用戶使用文件或套接字識別進程。
在.git
目錄上使用fuser
命令,查找正在訪問該目錄的所有進程 ID。
fuser .git
之后您可以使用-k
參數殺死進程,然后您應該可以刪除目錄。
fuser -k .git
我最近發現的另一個解決方案是使用lsof
命令,使用受影響的文件名作為參數。 例如:
#This will give you information about what process has the file open
[root@hose]$ lsof .git/objects/pack/.fuse_hidden000000000f1f
#This will kill the process locking the file
[root@host]$ kill -s 9 $(lsof -t .git/objects/pack/.fuse_hidden000000000f1f)
-t
開關告訴 lsof 使用“簡潔”模式,只返回 PID。 然后使用-s 9
標志將此 PID 傳遞給kill
,這意味着發送信號“SIGKILL”而不是默認的更禮貌的請求“SIGTERM”或可能的“SIGHUP”
對於 linux 用戶,如果您遇到此問題,請在終端上使用以下命令
rm -r directory_name
然后運行后會反復提示你是否要刪除寫保護文件,輸入 yes 然后回車,很快就會被刪除
在您的終端上使用以下命令
sudo rm -r 目錄名
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.