GIT: Necesito 'git rm' recursivamente el contenido de todas las carpetas de bin y obj
Pregunta
Alguien por accidente acaba de cometer todas sus carpetas Bin y OBJ a nuestro repositorio (hay alrededor de 40 carpetas de este tipo). Me gustaría hacer un git rm -r
en todas estas carpetas. ¿Hay algún comando para hacer esto?
Solución
Tener copias de seguridad,
find . -type d -name bin -exec git rm -r {} \;
find . -type d -name obj -exec git rm -r {} \;
Actualizar
Con Bash, puedes configurar el Shopt Globstar y ser feliz:
shopt -s globstar
git rm -r **/{obj,bin}/
Finalmente, si necesita eliminarlos del historial del repositorio, mire git filter-branch
y lea la sección en 'Eliminar objetos' desde el Libro pro git
Otros consejos
Una vez que revertirá (mantendrá los archivos en la historia) o restablecerá la confirmación,
git reset --hard
Una vez que se ignoran los archivos,
git clean -xdf
Lo uso para limpiar antes de reconstruir una solución. Parece que usa algunas DLL incluso después de un pago de una rama diferente o una fusión.
No debería necesitar recurrir a la rama de filtro. Rebase interactivo servirá. Recuerde la bandera --Preserve-Merges.
Espero que esto ayude.
Otra opción es revertir la confirmación ofensiva con git revert
.