如何在没有 rm -rf 大锤的情况下删除单个 git 存储库克隆?
How to delete a single git repository clone, without the rm -rf sledgehammer?
无法简单地使用 rm -r
删除 git 存储库,因为 .git
目录包含许多写保护文件。我有权限删除这些,因为我是所有者,但无法一一确认。
现在,通过将 -f
标志添加到 rm
可以在一个命令中完成所有操作,但这意味着我失去了所有保护措施,防止删除有充分理由保护的内容。例如,另一个 git 存储库,其中包含我尚未推送的本地分支。
但这似乎是唯一的办法,所以我发现自己最近rm -rf
做的很多,但我总是对此感到不安。有没有更好的方法来摆脱单个 repo 克隆,它不会询问数千个单独的文件,但如果我尝试擦除单个 repo 以外的东西,will 会失败?理想情况下,在实际删除之前,它还应该检查我要删除的 repo 是否有一些最新的远程。
我不太明白这个问题有什么不清楚的……是这样的:
如何删除包含所有内容的存储库,使用的命令不会同时核对任何其他包含写保护文件的目录?
首先,您收集所有垃圾对象:
git gc --prune=all
那么只剩下一个pack文件,是只读的,对应的pack index,也是只读的。现在
cd ..
rm -r repo
只会要求确认两次,而不是数千次。
不过,这并不能防止删除已签出的子模块。
您可以在 .bashrc:
中创建一个 bash 函数
function rmgit() {
# Recursively apply write permissions to files in the .git folder
chmod -R +w "/.git"
# Remove the clone
rm -r ""
}
开始新的 shell,您现在应该能够:
rmgit /path/to/clone
无法简单地使用 rm -r
删除 git 存储库,因为 .git
目录包含许多写保护文件。我有权限删除这些,因为我是所有者,但无法一一确认。
现在,通过将 -f
标志添加到 rm
可以在一个命令中完成所有操作,但这意味着我失去了所有保护措施,防止删除有充分理由保护的内容。例如,另一个 git 存储库,其中包含我尚未推送的本地分支。
但这似乎是唯一的办法,所以我发现自己最近rm -rf
做的很多,但我总是对此感到不安。有没有更好的方法来摆脱单个 repo 克隆,它不会询问数千个单独的文件,但如果我尝试擦除单个 repo 以外的东西,will 会失败?理想情况下,在实际删除之前,它还应该检查我要删除的 repo 是否有一些最新的远程。
我不太明白这个问题有什么不清楚的……是这样的:
如何删除包含所有内容的存储库,使用的命令不会同时核对任何其他包含写保护文件的目录?
首先,您收集所有垃圾对象:
git gc --prune=all
那么只剩下一个pack文件,是只读的,对应的pack index,也是只读的。现在
cd ..
rm -r repo
只会要求确认两次,而不是数千次。
不过,这并不能防止删除已签出的子模块。
您可以在 .bashrc:
中创建一个 bash 函数function rmgit() {
# Recursively apply write permissions to files in the .git folder
chmod -R +w "/.git"
# Remove the clone
rm -r ""
}
开始新的 shell,您现在应该能够:
rmgit /path/to/clone