簡體   English   中英

無法刪除 .git:目錄不為空

[英]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 .gitsudo rm -rf .gitchmod -w .git/objects/pathkillall 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM