我正在尝试执行git rm --cached -r <folder>
命令以递归地删除名为.svn的文件夹的所有实例。我尝试过以下方法:
.svn
/.svn
/*/.svn
/*/*/.svn
etc
它可以工作,但我相信有一种更加动态的方式。
谢谢
我正在尝试执行git rm --cached -r <folder>
命令以递归地删除名为.svn的文件夹的所有实例。我尝试过以下方法:
.svn
/.svn
/*/.svn
/*/*/.svn
etc
它可以工作,但我相信有一种更加动态的方式。
谢谢
find . -type d -name '.svn' -print0 | xargs -0 git rm --cached -r --
@gregor的代码在带有空格的目录上会失败。
find
命令的人,你可以在 -name
参数中使用通配符 (*
),并将 type
更改为 -f
(而不是 -d
)以搜索文件。别忘了像 @steve76 上面说的那样使用 --ignore-unmatch
。 - rgoliveirafind
、管道和xargs
是你的好伙伴:
find . -name .svn | xargs git rm -r
如果您的工作树中没有其他更改(您可以先将它们存储),那么可能有一种更简单的方法:
find -type d -name .svn -delete
git add -u
git commit -m 'remove svn folders -- no idea which maniac would stage them'
如果你只想取消暂存,但不想物理删除它们,请选择安东的答案:
find -type d -name .svn -print0 | xargs -0 git rm -r --cached
find . -name .svn -exec git rm -r --cached {} \;
如果没有必要,就没有必要调用xargs。
这对我有用:
find . -name '.svn' -print0 | xargs -0 git rm --cached --ignore-unmatch -r --