如何在没有rm -rf sledgehammer的情况下删除单个git存储库克隆?

时间:2017-03-30 10:29:29

标签: linux git file-permissions

仅使用.git删除git repo是不可能的,因为-f目录包含许多写保护文件。我已经许可删除了这些,因为我是所有者,但是逐一确认它们是不可行的。

现在,通过将rm标志添加到rm -rf,可以在一个命令中完成所有操作,但这意味着我将失去所有保护,以防止删除因有充分理由而受到保护的内容。比如,例如,另一个带有本地分支的git存储库,我还没推动它。

但这似乎是唯一的方法,所以我最近发现自己做了很多{{1}},但我总是对此感到不安。有没有更好的方法来摆脱单个repo克隆,不会询问成千上万的单个文件,但如果我试图删除一些只有一个回购的东西,失败?理想情况下,在实际删除之前,它还应该检查我尝试删除的repo是否有一些最新的遥控器。

我不太清楚这个问题有什么不清楚......就是这样:

如何删除包含所有内容的存储库,使用的命令还会将其中包含写保护文件的任何其他目录编入其中?

2 个答案:

答案 0 :(得分:3)

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

git gc --prune=all

然后只剩下一个包文件,它是只读的,以及相应的包索引,它也是只读的。现在

cd ..
rm -r repo

只会要求两次确认而不是数千次。

但这并不能防止删除已签出的子模块。

答案 1 :(得分:1)

您可以在.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