как удалить папку .svn из репозитория github - PullRequest
6 голосов
/ 04 августа 2011

Я извлек репозиторий, используя TortoiseSVN.В нем находятся .svn папки в корне и все подпапки.Я создал репозиторий github и передал весь репозиторий.

Проблема в том, что в моей локальной копии я удалил папки .svn из репозитория, а затем зафиксировал изменения.Он не удаляет папку из предыдущих версий репозитория ...

Я знаю, как удалить конфиденциальные данные из репозитория github отсюда:

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

Ноесли я использую это, я должен выполнить эту процедуру более 10 раз (а это такая трата времени) ... поэтому мне было интересно, кто-нибудь может сказать мне, как удалить все папки .svn из всего репоза один раз?

Ответы [ 3 ]

7 голосов
/ 10 августа 2011

Мне нужно было сделать это недавно, и я просто выполнил следующую команду из моего корневого каталога репо:

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

Это рекурсивно ищет все вхождения в папке .svn и удаляет ее и ее содержимоерекурсивно.параметр --ignore-unmatch не позволяет git задыхаться, если он не находит указанный файл в хранилище.

Следующее, что нужно сделать, конечно, это добавить .svn к вашему .gitnore, чтобы вы не 'ошибочно начинаю отслеживать эти файлы когда-либо снова.

4 голосов
/ 04 декабря 2012

Попробуйте это:

find . -type d -name .svn | xargs git rm -rf --ignore-unmatch
0 голосов
/ 03 октября 2014

Мне недавно пришлось сделать это на моей машине с 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, а затем git rm -rf Команда находится внутри цикла foreach.

...