7

TortoiseSVNを使用してリポジトリをプルしました。その中には.svn、ルート内のフォルダーとすべてのサブフォルダーがあります。githubリポジトリを作成し、リポジトリ全体をプッシュしました。

問題は、ローカルコピーで、.svnリポジトリからフォルダーを削除してから、変更をコミットしたことです。以前のバージョンのリポジトリからフォルダを削除することはありません...

私はここからgithubリポジトリから機密データを削除する方法を知っています:

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

しかし、これを使用する場合は、この手順を10回以上実行する必要があります(これを行うのは時間の無駄です)...したがって.svn、リポジトリ全体からすべてのフォルダーを削除する方法を誰かに教えてもらえるのではないかと思いました。シングルゴー?

4

3 に答える 3

7

最近これを行う必要があり、リポジトリのルートディレクトリから次のコマンドを実行しました。

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

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

もちろん、次に行うことは、.svnを.gitnoreに追加して、誤ってこれらのファイルの追跡を二度と開始しないようにすることです。

于 2011-08-10T19:57:29.170 に答える
5

これを試して:

find . -type d -name .svn | xargs git rm -rf --ignore-unmatch
于 2012-12-04T11:51:43.483 に答える
0

最近、Windowsマシンでこれを実行する必要がありました。これは、同等のPowerShellコマンドです。おそらくもっと良い方法がありますが、私はPSにかなり不器用です:

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

GCI(Get-Child-Item)は、「。svn」という名前のすべてのものを検索し、PSIsContainerはそのディレクトリかどうかをチェックし、Select-ObjectはFullName属性のみを取得することになっているため、gitrm-rfコマンドが配置されます。 foreachループ内。

于 2014-10-03T17:04:27.863 に答える