2011-08-04 20 views
6

TortoiseSVNを使用してリポジトリを取得しました。ルートには.svnのフォルダとすべてのサブフォルダがあります。私はgithubリポジトリを作成し、リポジトリ全体をプッシュしました。githubリポジトリから.svnフォルダを削除する方法

私のローカルコピーでは、.svnというフォルダをrepoから削除してから、変更をコミットしてしまいました。

http://help.github.com/remove-sensitive-data/

をしかし、私はこれを使用する場合、私は従わなければならない:それは私がここからGitHubのレポから機密データを削除する方法を知って...リポジトリの以前のバージョンから

をフォルダを削除しません。この手順は10時間以上(それはそれを行うのにかかる時間)です...だから誰も私が一度に全体のレポからすべての.svnフォルダを削除する方法を教えてくれるのだろうか?

答えて

6

私は最近、これを行うために必要な、私はちょうど私のレポの私のルートディレクトリから次のコマンドを実行しました:

find . -name '.svn' | xargs git rm -rf --ignore-unmatch 

これはの.svnフォルダのすべての出現のために再帰的に検索し、再帰的にそれとその内容を削除します。 --ignore-unmatchパラメータは、リポジトリ内で指定されたファイルが見つからない場合、gitが窒息するのを防ぎます。

次は、.svnを.gitnoreに追加して、誤ってそれらのファイルを再度追跡しないようにすることです。私は最近、私のWindowsマシン上でこれをしなければならなかった

find . -type d -name .svn | xargs git rm -rf --ignore-unmatch 
4

はこれを試してみてください。これに相当するPowerShellコマンドがあります。そこに良い方法はおそらくだが、私はPSとかなり不器用だ:

gci -Recurse -filter ".svn" | ?{ $_.PSIsContainer } | Select-Object FullName | %{ git rm -rf --ignore-unmatch $_.FullName } 

GCI(ゲット-子品目)そのディレクトリ場合、「の.svn」という名前のすべてのものを見つけるPSIsContainerチェックし、選択します-ObjectはFullName属性だけを取得し、git rm -rfコマンドはforeachループ内に置かれます。

0

関連する問題