2012-03-08 12 views
4

git rm --cached -r <folder>を実行して、.svnという名前のフォルダのすべてのインスタンスを再帰的に削除しようとしています。私はこれを試しました:git wildcard - サブディレクトリのすべてのインスタンスを削除します。

.svn 
/.svn 
/*/.svn 
/*/*/.svn 

etc 

そして、私は確かによりダイナミックな方法があります。 、

find -type d -name .svn -delete 
git add -u 
git commit -m 'remove svn folders -- no idea which maniac would stage them' 

あなただけそれらをunstageする場合:

おかげ

+0

念のためのためにsteve76 @ありがとう:Gitはうまく歴史を維持し、SVNリポジトリをインポートすることが可能であることに注意してください。 –

答えて

12

適切なソリューションは、次のようになります。グレゴールさん@

find . -type d -name '.svn' -print0 | xargs -0 git rm --cached -r -- 

は、スペースでのディレクトリに失敗します。

+0

+1、そこに行きます – knittl

+2

「一致しませんでした」というエラーがある場合、gitコマンドで--ignore-unmatchを使用してください。 。 。 4歳ですが、Googleではまだトップです。 – steve76

1

あなたworktree内の他の変更を持っていない場合(あなたが最初にそれらを隠しておくことができます)は、おそらくもっと簡単な方法がありますしかし、物理的に、それらを削除anton's answerに行かない:

find -type d -name .svn -print0 | xargs -0 git rm -r --cached 
3

find、パイプやxargsはあなたの友達です:

find . -name .svn | xargs git rm -r 
1
find . -name .svn -exec git rm -r --cached {} \; 

xargsを呼び出す必要はありません。

0

これは私の仕事:

find . -name '.svn' -print0 | xargs -0 git rm --cached --ignore-unmatch -r -- 

は--ignore-不一致

関連する問題