Estoy en el proceso de dividir un antiguo conjunto de aplicaciones que originalmente residía en un único repositorio de Subversion.¿Cómo eliminar todos los archivos en un repositorio de Git que no están en el directorio de trabajo?
Lo he convertido a un repositorio de Git y eliminé lo que no quiero, pero me gustaría reducir el tamaño del repositorio eliminando los datos históricos asociados con los archivos eliminados (el repositorio original mantenerse como referencia, por lo que no es necesario en el nuevo).
Idealmente, lo que me gustaría hacer es ir a través de todo el repositorio y eliminar cualquier archivo o carpeta que no esté presente en el directorio de trabajo, junto con cualquier historial asociado a ellos. Esto me dejaría con los contenidos de HEAD y un historial de commits que afectan esos archivos. Sin embargo, no he encontrado una forma de hacerlo (huérfano HEAD no ayuda, ya que no conserva el historial).
¿Esto es posible? Sé cómo eliminar un solo archivo o carpeta de todo el historial a través de git-filter-branch, pero hay demasiados archivos y carpetas para que esto sea un enfoque práctico ... a menos que haya una forma de filtrar en todos los archivos que no estén en HEAD ?
¿Qué pasa con los archivos que quedó rebautizado en el pasado? Eliminar el historial cuando se produjo el cambio de nombre o mantener el cambio de nombre (y rastrear un nombre de archivo diferente anterior al cambio de nombre) – knittl
Buen punto. Preferiría mantener el historial antes del cambio de nombre, por lo que habría que tener unos pocos archivos adicionales, lo cual está bien. –