仅使用.git
删除git repo是不可能的,因为-f
目录包含许多写保护文件。我已经许可删除了这些,因为我是所有者,但是逐一确认它们是不可行的。
现在,通过将rm
标志添加到rm -rf
,可以在一个命令中完成所有操作,但这意味着我将失去所有保护,以防止删除因有充分理由而受到保护的内容。比如,例如,另一个带有本地分支的git存储库,我还没推动它。
但这似乎是唯一的方法,所以我最近发现自己做了很多{{1}},但我总是对此感到不安。有没有更好的方法来摆脱单个repo克隆,不会询问成千上万的单个文件,但如果我试图删除一些只有一个回购的东西,将失败?理想情况下,在实际删除之前,它还应该检查我尝试删除的repo是否有一些最新的遥控器。
我不太清楚这个问题有什么不清楚......就是这样:
如何删除包含所有内容的存储库,使用不的命令还会将其中包含写保护文件的任何其他目录编入其中?
答案 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