簡體   English   中英

如何在沒有rm -rf sledgehammer的情況下刪除單個git存儲庫克隆?

[英]How to delete a single git repository clone, without the rm -rf sledgehammer?

簡單地使用rm -r刪除git repo是不可能的,因為.git目錄包含許多寫保護文件。 有權刪除這些因為我是所有者,但是逐一確認它們是不可行的。

現在,可以通過向rm添加-f標志在一個命令中完成所有操作,但這意味着我將失去所有保護,以防止刪除受到保護的內容。 比如,例如,另一個帶有本地分支的git存儲庫,我尚未推送。

但這似乎是唯一的方法,所以我發現自己最近做了很多rm -rf ,但我總是對此感到不安。 是否有更好的方法來擺脫單個repo克隆,這不會詢問成千上萬的單個文件,但如果我嘗試刪除一些東西而不是單個回購郵件失敗? 理想情況下,在實際刪除它之前,它還應該檢查我嘗試刪除的repo是否有一些最新的遙控器。


我不太清楚這個問題有什么不清楚......就是這樣:

如何刪除包含所有內容的存儲庫,使用的命令不會破壞其中包含寫保護文件的任何其他目錄?

首先,您收集所有垃圾對象:

git gc --prune=all

然后只剩下一個包文件,它是只讀的,以及相應的包索引,它也是只讀的。 現在

cd ..
rm -r repo

只會要求兩次確認而不是數千次。

但是,這並不能防止刪除已簽出的子模塊。

您可以在.bashrc中創建一個小bash函數:

function rmgit() {
    # Recursively apply write permissions to files in the .git folder
    chmod -R +w "${1}/.git"
    # Remove the clone
    rm -r "${1}"
}

啟動一個新shell,你現在應該能夠:

rmgit /path/to/clone

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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