2011-08-04 25 views
6

He sacado un repositorio usando TortoiseSVN. En él están las carpetas .svn en la raíz y todas las subcarpetas. Creé un repositorio de Github y empujé todo el repositorio.cómo quitar la carpeta .svn de github repo

El problema es que en mi copia local he eliminado las carpetas .svn del repositorio y luego he realizado los cambios. No elimina la carpeta de versiones anteriores del repositorio ...

que saber cómo eliminar los datos sensibles de recompra github desde aquí:

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

Pero si uso esto tiene que seguir este procedimiento es más de 10 veces (y es una pérdida de tiempo hacer eso) ... así que me preguntaba si alguien me puede decir cómo eliminar todas las carpetas .svn de todo el repositorio de una sola vez.

Respuesta

6

que tenía que hacer esto recientemente y me acaba de ejecutar el siguiente comando desde mi directorio raíz de mi repo:

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

Esto realiza una búsqueda recursiva todas las apariciones de la carpeta .svn y lo elimina y su contenido de forma recursiva . el parámetro --ignore-unmatch evita que git se asfixie si no encuentra el archivo especificado en el repositorio.

Lo siguiente que debe hacer, por supuesto, es agregar .svn a su .gitnore para que no comience a rastrear esos archivos nuevamente.

4

Prueba esto:

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

recientemente he tenido que hacer esto en mi máquina Windows. Aquí está el comando PowerShell comparable. es probable que haya una mejor manera, pero estoy bastante torpe con PS:

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

GCI (Get-Niño-Elemento) encontrarán todas las cosas nombradas ".svn", los controles PSIsContainer si es un directorio, seleccione -Object se supone que debe obtener solo el atributo FullName, y luego el comando git rm -rf se coloca dentro de un bucle foreach.

Cuestiones relacionadas